Збереження основного файлу в gdb


90

Чи можна зберегти / скинути основний файл за допомогою gdb? Іноді я хочу зберегти файл, щоб проаналізувати його пізніше.

Відповіді:


140

Виконайте команду 'create-core-file' у 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

4
Він буде збережений у поточному робочому каталозі GDB, який можна побачити за допомогою pwdкоманди. Якщо вам потрібно змінити його, ви можете зробити це за допомогою cd, як і в оболонці.
Джонатан Рейнхарт

3
@Jonathon_Reinhart передає шлях до основного файлу як generate-core-fileперший аргумент, якщо ви хочете зберегти його в певному місці
SergA

19

Ви також можете використовувати gcore <pid>для отримання ядер.


це має бути в коментарі
V-rund Puro-хіт

8
Будь ласка, загляньте на цю сторінку stackoverflow.com/help/privileges/comment : Коли я не повинен коментувати? .... "Відповідь на питання або надання альтернативного рішення існуючої відповіді;"
Майне

1
Схоже, gcoreце підтримується лише в новіших версіях gdb. Старі вимагають generate-core-file.
scai

Здається, це коротка назва для generate-core-fileобох, що роблять одне і те ж.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.