从函数获取char *之后的条件gdb断点

时间:2019-07-11 09:17:08

标签: c++ gdb

骨架代码:

让我们说您有这样的东西(x.cpp):

int main() {
   char* str = <some_function_which_returns_char*>; // Such as hello, hell, hellow and it could be anything.
   // Do some work here.
}

如果str包含“ hell”,如何在gdb中放置断点。此substr“ hell”可以出现在str的任何位置。说好了,你好,等等。我写过:

b x.cpp:3 if $_regex(str, "hell") // At line number 3 of above snapshot. Right after getting the char* 

这是正确的方法吗? 要么 还有其他方法可以解决吗?

让我们暂时不必担心泄漏和其他任何问题。

1 个答案:

答案 0 :(得分:1)

您可以使用cond命令使断点成为条件:

  • cond x.cpp:3 strcmp(str,"hell") == 0-精确地用于hell
  • cond x.cpp:3 strncmp (str,"hell",4)-适用于以hell开头的所有字符串。
  • cond x.cpp:3 strstr(str, "hell") != NULL-适用于所有包含hell作为子字符串的字符串。