GDB断点在非本机类型上具有多个条件

时间:2017-07-24 18:43:28

标签: c++ c gdb

我正在调试一个C / C ++程序,我想根据多个变量设置一个具有条件的断点。

  

break foo.cpp:60 if(bar == 3&& i == 5)

这似乎不起作用,因为只要它碰到foo.cpp:60就会停止,而不是每当两个条件都匹配时(它甚至不匹配其中一个条件)。有没有一种简单的方法来做我想要实现的目标?

编辑:bar我不是本机C类型,它们是强类型的。

  

break foo.cpp:60 if((A)bar == 3&&(B)i == 5)

2 个答案:

答案 0 :(得分:1)

解析条件语句并将其结果放入其自己的BOOL变量中,然后设置断点语句以评估单个变量。这使表格与GDB中显示的示例完全一致。文档:

例如:

BOOL x = FALSE;

x = ((bar == 3) && (i == 5));

(gdb)   break foo.cpp:60 if x

答案 1 :(得分:0)

这适合我。

(gdb) b dump_route_info if (strncmp(route->rt_key.prefix, "192.168.0.2", 15) == 0) && route->rt_key.mask == 32