如何在 __lldb_init_module 中获取当前调试进程的信息?

how to get current debugging process's info in __lldb_init_module?

lldb 扩展脚本的入口点是:

def __lldb_init_module(debugger, internal_dict):

但是,当我访问 debugger.target 时,它是 No Value

很多教程展示了如何使用 SBDebugger.CreateTarget 创建新的目标和进程,但现在我正在从 IDE 的调试工作流程进行调试,我认为我不应该创建目标我自己,我只想获取(或等待)当前调试过程(由 IDE 启动)和目标,然后调用一些命令作为 pro hand -p true -s false SIGPWR.

所以问题是我如何在 none-standalone-launch 模式下访问 current target

在命令行 lldb 中,有两个读取初始化文件的阶段。

在第一阶段读取 ~/.lldbinit,然后再创建任何目标。这样,其中的命令可以调节目标的构造。所以从那里获取的模块将看不到任何目标。

然后,如果 CWD 中有 .lldbinit,它将在命令行上指定的任何目标之后获取。这样就可以看到目标了。

Xcode 中的等效项(如果您使用的是相当新的 Xcode)是您可以在 运行 方案的选项选项卡中指定的 lldbinit。

另一种方法是在 main 上设置一个自动继续断点,并在该点获取 .lldbinit。注意,如果你想使用 process handle 必须有一个 运行ning 过程,所以你需要在某处的断点处这样做...