骨架代码:
让我们说您有这样的东西(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*
这是正确的方法吗? 要么 还有其他方法可以解决吗?
让我们暂时不必担心泄漏和其他任何问题。
答案 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
作为子字符串的字符串。