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?
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.
Avez-vous essayé d'utiliser kill
à partir de gdb?
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.
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.
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.