web-dev-qa-db-fra.com

Existe-t-il une commande gdb pour terminer une construction de boucle?

Dans gdb, j'ai la commande finish pour terminer facilement l'exécution d'un cadre de fonction, souvent en parcourant le code dans le débogueur, après avoir regardé quelques itérations d'une boucle, je voudrais terminer la boucle et continuez à marcher après. Actuellement, je fais cela en définissant un point d'arrêt sur la première ligne après la boucle et continue, cependant, ce serait vraiment pratique s'il y avait une simple commande gdb pour avoir le même effet mais sans nécessiter de point de rupture à définir et plus tard effacé.

Existe-t-il de toute façon dans gdb pour terminer l'exécution de la boucle en cours d'exécution?

27
WilliamKF

Existe-t-il une commande gdb pour terminer une construction de boucle?

Exécutez until sur la dernière ligne de la boucle, ou until NNNNNN est la dernière ligne de la boucle.

(gdb) help until
Execute until the program reaches a source line greater than the current
or a specified location (same args as break command) within the current frame.

pas besoin de définir un point d'arrêt et de le supprimer ultérieurement.

Les points d'arrêt temporaires se nettoient automatiquement:

(gdb) help tbreak
Set a temporary breakpoint.
Like "break" except the breakpoint is only temporary,
so it will be deleted when hit.  Equivalent to "break" followed
by using "enable delete" on the breakpoint number.
27
Employed Russian

gdb ne sait pas où se termine une boucle et ne peut donc pas faire cela. Je pense que le mieux que vous puissiez faire est d'utiliser la commande advance avec un emplacement après la boucle.

5
Jester