我通过执行以下操作来定义断点:
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机没有影响
为什么?我能做些什么来完成这项工作吗?你知道吗
谢谢你。你知道吗
在任何命令重新启动被调试对象之后,lldb会在断点上停止命令的执行。这样做有点棘手,因为您可能会在重新启动被调试对象的命令中间碰到一个断点,然后我们必须重新进入命令解释器-而在断点命令中间。你知道吗
在lldb能够有力地处理这个问题之前,还需要更多的清理工作,所以我们现在不允许这样做。你知道吗
根据您尝试执行的操作,您可能能够反转问题并从Python驱动整个调试会话。如果这似乎是一件有用的事情,这里有一个例子可以让你开始:
http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py
相关问题 更多 >
编程相关推荐