Enregistrement du fichier core dans gdb

90

Est-il possible de sauvegarder / vider le fichier core en utilisant gdb? Parfois, je veux enregistrer le fichier pour l'analyser plus tard.

Maciej Piechotka
la source

Réponses:

140

Exécutez la commande 'generate-core-file' dans gdb.

(gdb) help generate-core-file
Save a core file with the current state of the debugged process.
Argument is optional filename.  Default filename is 'core.<process_id>'.
(gdb) break main
Breakpoint 1 at 0x400e0b: file utils/udec.c, line 36.
(gdb) r
Starting program: /home/nos/build/utils/udec

Breakpoint 1, main (argc=1, argv=0x7fffffffe9a8) at utils/udec.c:36
36              int fileargc = 1;
(gdb) generate-core-file
Saved corefile core.7336
nos
la source
4
Il sera enregistré dans le répertoire de travail actuel de GDB, visible via la pwdcommande. Si vous avez besoin de le changer, vous pouvez le faire avec cd, comme dans un shell.
Jonathon Reinhart
3
@Jonathon_Reinhart passe le chemin du fichier core comme generate-core-filepremier argument si vous voulez le sauvegarder à un certain endroit
SergA
19

Vous pouvez également utiliser gcore <pid>pour produire des noyaux.

Meinew
la source
cela devrait être dans la partie commentaire
V-rund Puro-hit
8
Veuillez consulter cette page stackoverflow.com/help/privileges/comment : Quand ne dois-je pas commenter? .... "Répondre à une question ou fournir une solution alternative à une réponse existante;"
Meinew
1
Il semble que ce gcoresoit uniquement pris en charge dans les nouvelles versions de gdb. Les anciens exigent generate-core-file.
scai
Cela semble être un nom court pour generate-core-file, les deux faisant la même chose.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功