Debugging 从非交互式LLDB会话提取状态?

Debugging 从非交互式LLDB会话提取状态?,debugging,lldb,Debugging,Lldb,在不启动交互式会话的情况下,是否可以使用LLDB提取C/C++程序的当前状态?我已经看到了一些关于LLDB API的信息,但是我没有看到太多关于如何使用它的信息,以及它是否能够完成我所寻找的 理想情况下,我会用Python或其他东西编写一些代码,这是我正在调试的代码的外部代码,在那里我使用LLDB API获取有关当前程序的信息,例如当前变量和值,并可以启动和停止执行。这(或其中的一个子集)可能吗?有别的选择吗 下面是我想做的一些伪代码: state = program.getState() pr

在不启动交互式会话的情况下,是否可以使用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命令都是直接使用公共SB API实现的

因此,你当然可以做你想做的事

下面是一个使用SB API驱动程序的示例:

以下是获取所有全局变量及其值的示例:

该目录中还有许多其他的例子,可以做您可能感兴趣的部分工作。若有任何事情(在合理的范围内)你们想用SB API做,但找不到方法,请提交一个bug。其目的是sbapi向LLDB提供一个与命令解释器正交的完整接口

当然,如果愿意的话,您也可以在非交互模式下使用命令解释器(通过SBCommandTransparer类),尽管我不建议您在编程调试器时使用命令解释器,因为这样会将代码绑定到各种lldb命令的输出细节上,并且我们不保证输出为API