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

问题描述 投票:0回答:1

是否可以使用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()
debugging lldb
1个回答
1
投票

Xcode调试器是使用lldb的API实现的。 Xcode也恰好提供了lldb命令控制台,但所有UI命令都直接使用公共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但有什么(在合理范围内)但是找不到办法,请提交一个bug与http://bugs.llvm.org。目的是SB API为LLDB提供一个完整的接口,与命令解释器正交。

当然,如果你喜欢(通过SBCommandInterpreter类),你也可以在非交互模式下使用命令解释器,虽然我不建议对编程调试器进行编程,因为最终会将你的代码绑定到输出的细节上。各种lldb命令,我们不保证输出为API ...

© www.soinside.com 2019 - 2024. All rights reserved.