LLDB:Python API StepInstruction未步进twi

2024-09-26 21:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过执行以下操作来定义断点:

breakpoint = target.BreakpointCreateByAddress(loadAddr)
breakpoint.SetScriptCallbackFunction( "mylldbmodule.bp_hit" )

我的bp\u hit函数定义为:

def bp_hit(frame, *args):

    thread = frame.GetThread()
    process = thread.GetProcess()

    #
    # some work done here
    #

    #thread.StepInstruction( True )
    #thread.StepInstruction( True )

    # 
    # some more work done here
    #

当我的断点被击中,我可以看到我的电脑是在loadAddr。如果执行了其中一个StepInstruction调用,则在查看时,我的pc是loadAddr+4。但是,如果两个步骤指令都被执行,我的电脑在查看时仍然是loadAddr+4。你知道吗

由于某些原因,第二步(甚至第三步)指令对pc机没有影响

为什么?我能做些什么来完成这项工作吗?你知道吗

谢谢你。你知道吗


Tags: truehere定义somethreadframeworkbp
1条回答
网友
1楼 · 发布于 2024-09-26 21:53:43

在任何命令重新启动被调试对象之后,lldb会在断点上停止命令的执行。这样做有点棘手,因为您可能会在重新启动被调试对象的命令中间碰到一个断点,然后我们必须重新进入命令解释器-而在断点命令中间。你知道吗

在lldb能够有力地处理这个问题之前,还需要更多的清理工作,所以我们现在不允许这样做。你知道吗

根据您尝试执行的操作,您可能能够反转问题并从Python驱动整个调试会话。如果这似乎是一件有用的事情,这里有一个例子可以让你开始:

http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py

相关问题 更多 >

    热门问题