2 votes

point d'arrêt conditionnel de gdb après avoir récupéré le char* d'une fonction

Code squelette :

Disons que vous avez quelque chose comme ceci (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.
}

Comment mettre un point d'arrêt dans gdb si str contient "hell". Ce substrat 'hell' peut se trouver à n'importe quel endroit de str. Dites ahell, hello etc. J'ai écrit :

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

Est-ce le bon chemin ? OU Existe-t-il d'autres moyens d'y faire face ?

Ne nous préoccupons pas des fuites et de tout le reste pour le moment.

1voto

alon Points 200

Vous pouvez utiliser le cond pour rendre le point d'arrêt conditionnel :

  • cond x.cpp:3 strcmp(str,"hell") == 0 - pour hell exactement.
  • cond x.cpp:3 strncmp (str,"hell",4) - pour toutes les chaînes de caractères qui commencent par hell .
  • cond x.cpp:3 strstr(str, "hell") != NULL - pour toutes les chaînes de caractères contenant hell comme une sous-chaîne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X