условная точка останова GDB после получения char * из функции - PullRequest
2 голосов
/ 11 июля 2019

Код скелета:

Допустим, у вас есть что-то вроде этого (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.
}

Как поставить точку останова в GDB, еслиул содержит "ад".Этот субстрат «ад» может прийти в любое место ул.Скажите ahell, hello и т. Д. Я написал:

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

Это правильный путь?ИЛИ Есть ли другие способы справиться с этим?

Давайте пока не будем беспокоиться об утечках и о чем-либо еще.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете использовать команду 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 в качестве подстроки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...