【发布时间】:2014-09-22 05:53:14
【问题描述】:
我有一个充满功能的代码,例如:
bool f_i()
{
if (!f_0()) {
return false;
}
if (!f_1()) {
return false;
}
// ...
if (!f_n()) {
return false;
}
return true;
}
// etc...
在某些执行步骤中,一些被调用者可以返回false,而false 会传播到所有调用者。目前很难编写错误消息(代码正在迅速更改)。在调试期间,在每个 return false; 之前都有错误消息是过多的。
是否可以使用GDB 全局在return 语句上设置条件(例如,函数返回false)断点?
【问题讨论】:
-
你能把它分成多行然后断线吗?
b file.cpp:12 -
@Ben 不,我不能。有大量的一行,其中包含
return false;。 -
我认为它比这复杂得多,因为整个事情都简单地转移到
return f1() && f0();。无论如何,如果归结为带有bool转换运算符的结构和预处理器上的一点扭矩,如果足够用力(并给你一个设置断点的地方:在运算符上),它可能会起作用。祝你好运。 -
@WhozCraig 不错的方法。这将是最后的手段。
-
有AST matchers in clang++,但我想不出怎么用。顺便说一句,GDB 有
rbreak(使用正则表达式)命令,但它只专门用于函数名称。
标签: c++ gdb breakpoints conditional-breakpoint