如果帧处于回溯状态,则GDB中断

时间:2010-11-12 05:23:46

标签: gdb conditional-breakpoint

我想在gdb断点上设置一个条件,只有在回溯中出现某个函数名时才会中断。最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

比Python脚本更简单的解决方案是使用temporary breakpoint

看起来像这样:

b ParentFunction
command 1
  tb FunctionImInterestedIn
  c
end

每次进入ParentFunction时,您都会在您真正感兴趣的功能上设置一次性断点,然后继续运行(可能直到您达到该断点)。 / p>

由于您在FunctionImInterestedIn上只打破一次,如果在FunctionImInterestedIn的上下文中多次调用ParentFunction并且您想要破解,则无法工作每次调用。

答案 1 :(得分:2)

我不确定如何完全满足您的要求,但是如果您可以访问相关函数的源代码,可能的解决方法是在开始时将一些全局布尔变量设置为true函数的函数,并在函数退出之前将其设置为false。然后你可以设置一个条件断点(使用condition命令),只有当这个布尔变量为true时才会停止。

答案 2 :(得分:0)

替代rix0rrr的答案:

b main
commands
set $inParentFunction = 0
c
end

b ParentFunction
commands
set $inParentFunction = 1
c
end

b FunctionImInterestedIn if ($inParentFunction)