Salvando arquivo principal em gdb

91

É possível salvar / despejar o arquivo principal usando gdb? Às vezes, quero salvar o arquivo para analisá-lo mais tarde.

Maciej Piechotka
fonte

Respostas:

140

Emita o comando 'generate-core-file' no 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
fonte
4
Ele será salvo no diretório de trabalho atual do GDB, que pode ser visto por meio do pwdcomando. Se precisar alterá-lo, você pode fazer isso com cd, como em um shell.
Jonathon Reinhart
3
@Jonathon_Reinhart passe o caminho do arquivo principal como generate-core-fileprimeiro argumento se quiser salvá-lo em determinado lugar
SergA
19

Você também pode usar gcore <pid>para produzir núcleos.

Meinew
fonte
isso deve estar na parte de comentários
V-rund Puro-hit
8
Por favor, dê uma olhada nesta página stackoverflow.com/help/privileges/comment : Quando eu não deveria comentar? .... "Respondendo uma pergunta ou fornecendo uma solução alternativa para uma resposta existente;"
Meinew
1
Parece que gcoresó é compatível com as versões mais recentes do gdb. Os antigos exigem generate-core-file.
scai
Este parece ser um nome curto para generate-core-fileambos fazendo a mesma coisa.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功