lldb background execution from script?
在GDB中,您可以继续/步骤/等。通过在命令后附加一个
我想知道LLDB中是否有等效功能?具体来说,我想指定要在脚本中使用的执行模型。
我想在LLDB脚本中执行的操作的示例:
1 2 3 4 5 6 7 8 9 10 | # this is just background setup for attaching to multiple processes # I've figured out how to do this in LLDB attach 1 add-inferior inferior 2 attach 2 # this is the step I don't know how to get to work consistently continue& inferior 1 # ... do debugging work on inferior 1, possibly switching to inferior 2 as needed |
我尝试过的事情:
在LLDB中,我在文档中找到的最接近的东西是两个" options "
我发现的另一件事(找不到任何文档)是,如果我将LLDB附加到现有的进程ID,那么当我从CLI发出
看起来
还请注意,增强了lldb的帮助,以便以
您还可以使用
就脚本命令而言。这种工作方式是lldb可以以同步或异步模式运行进程。在同步模式下,调试器中的所有命令(和SB API调用)将继续执行流程块,直到流程再次停止。在异步模式下,控制权立即返回,然后有人需要监视lldb事件流以获取进程事件,以弄清该进程何时再次停止。对于命令,lldb会为您完成。对于Python脚本,您必须手动执行。
如果您使用的是命令行,我们会根据是否也尝试从进程中获取stdio来确定对命令行命令执行的操作。
对于使用SB API编写的脚本,当用作lldb命令行命令或用作独立脚本时,默认情况下lldb以同步模式运行调试器。这样可以省去等待事件知道进程何时停止的麻烦。而且,由于目前尚没有一种方法可以"暂停"命令的中途运行并返回命令行(直到何时?),所以以异步模式运行通常不是很有用。但是在您要发出" continue"作为python命令的最后一个动作并希望异步发生的情况下,它很有用。然后您可以执行以下操作:
1 2 3 4 | old_async = debugger.GetAsync() debugger.SetAsync(True) process.Continue() debugger.SetAsync(old_async) |
然后,当进程成功继续而不是等待其再次停止时,基于Python的命令将退出。