骨架代码:

让我们说你有这样的东西(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*

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

现在让我们不要担心泄漏和其他任何问题。

最佳答案

您可以使用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作为子字符串的字符串。
  • 关于c++ - 从函数获取char *之后的条件gdb断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56985746/

    10-10 17:02