我应该用哪种语言在 gdb 中编写条件断点?

问题描述 投票:0回答:2

我对 gdb 中的条件断点很困惑。

最近,我想在 C++ 程序中放置一个断点,当特定变量等于“foo”时中断。

为此,我在 gdb CLI 中输入了以下内容:

break LINE_NUMBER if strcmp(myVar, "foo") == 0

但我花了很长时间和很多尝试才找到如何编码。

我首先开始:

break LINE_NUMBER if myVar == "foo"

break LINE_NUMBER if myVar.c_str() == "foo"

...

在我最终发现条件断点之前MAY必须用C语言编程。

有人知道编写条件断点的规则写在哪里吗?

我已阅读文档,但没有找到我需要的信息...

https://sourceware.org/gdb/current/onlinedocs/gdb.html/Conditions.html#Conditions

gdb conditional-breakpoint
2个回答
0
投票

文档明确指出条件是编程语言中的布尔表达式:

您还可以指定断点的条件。一个条件是 只是编程语言中的布尔表达式(请参阅 表达式)。

您的程序是用 C++ 编写的,因此理论上任何有效的 C++ 布尔表达式都应该有效。但实际上,GDB 对 C++ 表达式的支持有限,只有其中的某些子集有效,

strcmp(myVar, "foo") == 0
是有效的示例之一。您可以在GDB Wiki 上的表达式评估上找到一些需要改进的地方。


© www.soinside.com 2019 - 2024. All rights reserved.