从非交互式 LLDB 会话中提取状态?
Extract state from non-interactive LLDB session?
是否可以在不启动交互式会话的情况下使用 LLDB 提取 C/C++ 程序的当前状态?我看过一些关于 LLDB API 的信息,但我没有看到太多关于如何使用它的信息,以及它是否能完成我正在寻找的东西。
理想情况下,我会在 Python 之类的地方写一些代码,这是我正在调试的代码的外部,我在其中使用 LLDB API 来获取有关当前程序的信息,例如当前变量和值,并可以开始和停止执行。这(或其中的一部分)可能吗?有其他选择吗?
这是我想做的一些伪代码:
state = program.getState()
print state.values
program.next()
newState = state.set("newVariable", 10)
program.setState(newState)
program.continue()
Xcode 调试器是使用 lldb 的 API 实现的。 Xcode 碰巧也提供了一个 lldb 命令控制台,但是所有 UI 命令都是直接使用 public SB API 实现的。
所以当然可以为所欲为。
下面是一个用 SB API 驱动程序的例子:
https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/process_events.py
下面是获取所有全局变量及其值的示例:
https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/globals.py
该目录中还有许多其他示例,它们可以完成您可能感兴趣的部分内容。如果有任何事情(在合理范围内)您想使用 SB API 进行但不能'如果找不到解决方法,请使用 http://bugs.llvm.org 提交错误。目的是 SB API 为 LLDB 提供一个完整的接口,与命令解释器正交。
当然,如果您愿意,您也可以在非交互模式下使用命令解释器(通过 SBCommandInterpreter class),但我不建议对调试器进行编程,因为这最终会绑定您的代码与各种 lldb 命令的输出细节有关,我们不保证输出为 API...
是否可以在不启动交互式会话的情况下使用 LLDB 提取 C/C++ 程序的当前状态?我看过一些关于 LLDB API 的信息,但我没有看到太多关于如何使用它的信息,以及它是否能完成我正在寻找的东西。
理想情况下,我会在 Python 之类的地方写一些代码,这是我正在调试的代码的外部,我在其中使用 LLDB API 来获取有关当前程序的信息,例如当前变量和值,并可以开始和停止执行。这(或其中的一部分)可能吗?有其他选择吗?
这是我想做的一些伪代码:
state = program.getState()
print state.values
program.next()
newState = state.set("newVariable", 10)
program.setState(newState)
program.continue()
Xcode 调试器是使用 lldb 的 API 实现的。 Xcode 碰巧也提供了一个 lldb 命令控制台,但是所有 UI 命令都是直接使用 public SB API 实现的。
所以当然可以为所欲为。
下面是一个用 SB API 驱动程序的例子:
https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/process_events.py
下面是获取所有全局变量及其值的示例:
https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/globals.py
该目录中还有许多其他示例,它们可以完成您可能感兴趣的部分内容。如果有任何事情(在合理范围内)您想使用 SB API 进行但不能'如果找不到解决方法,请使用 http://bugs.llvm.org 提交错误。目的是 SB API 为 LLDB 提供一个完整的接口,与命令解释器正交。
当然,如果您愿意,您也可以在非交互模式下使用命令解释器(通过 SBCommandInterpreter class),但我不建议对调试器进行编程,因为这最终会绑定您的代码与各种 lldb 命令的输出细节有关,我们不保证输出为 API...