J'ai une fonction qui est appelé grand nombre de fois, et finalement de segmentation. Cependant, je ne veux pas définir un point d'arrêt à cette fonction et d'arrêter chaque fois que l'on l'appelle, parce que je vais être ici depuis des années. J'ai entendu dire que je peux mettre un counter
de GDB pour un point d'arrêt, et à chaque fois que le point d'arrêt est atteint, le compteur est décrémenté, et seulement est déclenchée lorsque l' counter
= 0. Est-ce exact et si oui, comment dois-je faire? Merci de donner le gdb code pour l'établissement de ce point d'arrêt.
Réponse
Trop de publicités? Lisez la section 5.1.6 du manuel de la BDG. Ce que vous devez faire, c'est d'abord définir un point d'arrêt, puis définir un «nombre d'ignorants» pour ce numéro, par exemple ignore 23 1000
.
Si vous ne savez pas combien de fois ignorer le point d'arrêt et que vous ne voulez pas compter manuellement, voici ce qui pourrait vous aider:
ignore 23 1000000 # set ignore count very high.
run # the program will SIGSEGV before reaching the ignore count.
# Once it stops with SIGSEGV:
info break 23 # tells you how many times the breakpoint has been hit,
# which is exactly the count you want