我创建了step-scripted
,为我打印调试器调用的函数的名称。
现在,我要自动化需要输入的部分:thread step-scripted -C MyTrace.Trace
如何从脚本运行以上命令?
所以我会做这样的事情:
script
while True:
thread step-scripted -C MyTrace.Trace
首先,没有理由只执行一个步骤计划。如果您想永远走一步,那么就要做一步计划-永远不要将计划设置为完成,并从should_stop
中返回false。更加方便的是,如果您使用的是最新的lldb,则可以使用-k <key> -v <value>
参数将参数传递给脚本化的步骤计划。因此,您也可以让您的计划输入“计数”,然后执行多次。
否则,最简单的方法是使用Python接口来实现可自动执行此步骤的自定义命令。 SBThreads是您执行的任务。如果您使用带有SBExecutionContext的命令形式,请在此处进行描述:
https://lldb.llvm.org/use/python-reference.html#id6
您可以从SBExecutionContext.thread
中获取线程,然后使用SBThread. StepUsingScriptedThreadPlan
调用您的线程计划以执行该步骤。一旦使用了python,就可以编写一个循环来永久执行此操作,直到遇到某种情况为止,等等。您的命令也可能需要执行多次,等等。
注意,如果您觉得更简单,也可以使用SBCommandInterpreter.HandleCommand
在脚本解释器中运行命令。