как я могу получить всю память coredump с помощью google breakpad

Я могу получить всю память минидампа на платформе Windows, используя MiniDumpWithFullMemory. Но как я могу сделать это на платформе Linux?


person laughing    schedule 21.08.2012    source источник


Ответы (3)


Первоначальный вопрос заключался в том, как создать совместимый дамп памяти gdb с помощью Google Breakpad в Linux. На самом деле это возможно, следуйте инструкциям Google, чтобы создать файлы минидампа и символов:

https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/linux_starter_guide.md

а затем используйте этот инструмент для преобразования минидампа в дамп ядра: https://chromium.googlesource.com/chromium/src/+/master/docs/linux_minidump_to_core.md

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

person galk    schedule 14.04.2016

Ядро может (при определенных условиях) создавать дамп файл core(5). См. также этот вопрос. Возможно, вам придется вызвать setrlimit системный вызов для включения дампа ядра, возможно, через встроенную функцию bash ulimit.

Многие вещи можно запросить или настроить через /proc, в частности, /proc/1234/maps показывает карту адресов процесса 1234, а /proc/1234/mem предоставляет доступ к его адресному пространству.

gdb часто дает команду gcore для принудительного дамп ядра.

person Basile Starynkevitch    schedule 21.08.2012
comment
спасибо, мой код должен быть кросс-платформенным, поэтому я выбираю google breakpad. поэтому я хочу узнать, может ли breakpad сбрасывать минидамп полной памяти в linux? - person laughing; 21.08.2012

В настоящее время Breakpad не поддерживает создание дампов памяти в Linux. Прости. При желании вы можете записать полные дампы ядра и использовать инструмент core2md в дереве Breakpad, чтобы превратить их в минидампы: http://code.google.com/p/google-breakpad/source/browse/trunk/src/tools/linux/core2md/core2md.cc

person Ted Mielczarek    schedule 25.09.2012