如果帧在回溯中,则GDB中断

如果帧在回溯中,则GDB中断,gdb,conditional-breakpoint,Gdb,Conditional Breakpoint,我想在gdb断点上设置一个条件,仅当某个函数名出现在回溯中时才中断。最好的方法是什么?我不知道如何准确地执行您要求的操作,但是如果您可以访问相关函数的源代码,一个可能的解决方法是在函数开始时将某个全局布尔变量设置为true,并在函数退出之前将其设置为false。然后,您可以设置一个条件断点(使用condition命令),仅当此布尔变量为true时停止。这是一个比Python脚本更简单的解决方案,使用 看起来是这样的: b ParentFunction command 1 tb Functio

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

我不知道如何准确地执行您要求的操作,但是如果您可以访问相关函数的源代码,一个可能的解决方法是在函数开始时将某个全局布尔变量设置为
true
,并在函数退出之前将其设置为
false
。然后,您可以设置一个条件断点(使用
condition
命令),仅当此布尔变量为
true

时停止。这是一个比Python脚本更简单的解决方案,使用

看起来是这样的:

b ParentFunction
command 1
  tb FunctionImInterestedIn
  c
end
每次闯入
ParentFunction
,您都会在您真正感兴趣的函数上设置一个一次性断点,然后继续运行(大概直到达到该断点为止)


由于在
FunctionImInterestedIn
上只中断一次,因此如果在
ParentFunction
的上下文中多次调用
FunctionImInterestedIn
,并且希望在每次调用时中断,则这将不起作用。

rix0rrr的答案的替代方案:

b main
commands
set $inParentFunction = 0
c
end

b ParentFunction
commands
set $inParentFunction = 1
c
end

b FunctionImInterestedIn if ($inParentFunction)

这就是我最终要做的,但我想知道如何在不重新编译的情况下完成它。可能是