如何在 __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 过程,所以你需要在某处的断点处这样做...
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 过程,所以你需要在某处的断点处这样做...