Что означает дамп ядра кода C? - PullRequest
3 голосов
/ 27 мая 2010

Что означает расширение core dump и как читать файл core dump ? Как и при открытии файла в текстовых редакторах, я получаю значения мусора.

Примечание: его расширение выглядит примерно так: .2369

Ответы [ 4 ]

5 голосов
/ 27 мая 2010

Файл ядра - это образ памяти процесса в тот момент, когда он был прерван. Прекращение может, например, произойти из-за ошибки сегментации или неудачного утверждения. Для «просмотра» coredump вам понадобится отладчик. Это позволит вам изучить состояние процесса. Это включает в себя перечисление трассировки стека для всех потоков процесса. Печать значений переменных и регистров. Обратите внимание, что это работает «лучше», если у вас есть отладочная информация.

Традиционно файлы ядра просто называются «ядром». Это имеет не такой приятный эффект, что ядра перезаписывают сами себя, прежде чем разработчик / администратор обнаружит их. Многие современные платформы позволяют давать core-файлам нестандартные имена, которые содержат дополнительную информацию. Например, число в конце вашего ядра может быть PID процесса, к которому принадлежит это ядро.

5 голосов
/ 27 мая 2010

Вы можете использовать GDB, чтобы прочитать дамп ядра. Расширение - это идентификатор процесса.

Вот ссылка на ветку, объясняющую, как это сделать.

А вот учебник gdb .

3 голосов
/ 27 мая 2010

Расширение чаще всего является ошибочным идентификатором процесса. Вам нужно проверить файл с помощью инструмента отладки.

2 голосов
/ 27 мая 2010

Википедия может объяснить дампы ядра лучше, чем я, но

Это дамп "основной" памяти; то есть память, регистры и другие состояния программы, которые удерживаются процессом при сбое.

Значение в конце имени файла должно зависеть от системы. Обычно я использую отладчик, такой как GDB, вместе с моей программой для проверки таких файлов.

...