web-dev-qa-db-fra.com

gdb: quitte le programme sans sortir de gdb

Je débogue un programme utilisant gdb. Je lance d'abord load mon exécutable, puis je continue pour exécuter le programme. Je veux parfois interrompre l'exécution de mon programme, alors je fais Ctrl + C.

Mon problème est que cela ferme les deux mon programme et gdb. Comment puis-je quitter mon programme sans quitter gdb?

22
Randomblue

On dirait que sous Windows, vous devez utiliser Ctrl-Break et non Ctrl-C. Voir cette page .

Extrait:

Les programmes MS-Windows qui appellent SetConsoleMode pour désactiver la signification spéciale De la frappe du clavier `Ctrl-C 'ne peuvent pas être interrompus en tapant Cc. Pour cette raison, gdb sous MS-Windows prend en charge C- en tant que séquence de touches d'interruption alternative , qui peut être utilisée pour interrompre le débogage même s'il ignore Cc.

4
trojanfoe

Avez-vous essayé d'utiliser kill à partir de gdb?

21
Manlio

Utilisez ctrl-c pour interrompre l'application. Ensuite, exécutez "signal SIGINT" à partir de l’invite GDB, ce qui enverra ce signal à votre application, lui permettant de faire la même chose que si vous utilisiez ctrl-c depuis la ligne de commande.

14
David Martens

Tout d’abord, lancez le programme (pas à l’intérieur de gdb), puis trouvez son pid.

Dans un autre shell, exécutez gdb --pid=<your program's pid>. Ceci attache gdb à un programme en cours d'exécution. Il arrête l'exécution du programme, alors lancez c pour continuer.

Maintenant quittez votre programme, votre session gdb y restera.

2
cornuz

Comme Manlio l'a dit, ce que vous voulez dans ce cas-ci est kill, ce qui vous invitera avec un message qui se lit comme suit: 

Kill the program being debugged? (y or n)

Si vous tapez help running, vous verrez toutes les commandes importantes à connaître pour effectuer des tâches courantes, telles que l'arrêt de l'exécution d'un programme en cours. Celles-ci devraient être toutes les commandes pour le programme que vous exécutez et non pas gdb.

 Shell

0
kdo53