【发布时间】:2020-09-17 04:17:48
【问题描述】:
我正在使用不使用异常的 C++ 代码库,约定是每个函数在失败时返回 false,因此代码的很大一部分如下所示:
bool compute_something(int& result) {
bool ok = step1();
ok = ok && step2();
ok = ok && step3();
...
ok = ok && stepN(result);
return ok;
}
在调试错误时,我想在程序中名为“ok”的任何变量变为false时添加一个断点,以便找到错误发生的确切时刻。
我找到了this question,有点类似,但不能解决这个问题(而且是gdb特有的)。
这可以在visual studio中实现吗?或任何其他环境,答案可能对其他人有所帮助。
【问题讨论】:
-
很难做到。名字只是对人类的一种方便。计算机不使用它们;一切都只是一个地址或一个地址的偏移量。来自调试版本的额外信息可以帮助追踪所有
oks,但一般情况下不起作用。如何管理对ok的指针和引用?递归会发生什么?这可能是很多oks。 -
我的想法与通常的条件断点一样。在任何范围内,在任何行,如果
ok == false(其中 ok 是局部变量),您都可以添加条件断点。尽管我明白您的意思,但通过引用函数传递本地 ok,您将能够间接修改它。事实上,我真正关心的场景正是通常的断点之一,即只有一个 local 变量被修改。
标签: c++ visual-studio debugging conditional-breakpoint