Я могу получить всю память минидампа на платформе Windows, используя MiniDumpWithFullMemory. Но как я могу сделать это на платформе Linux?
как я могу получить всю память coredump с помощью google breakpad
Ответы (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
Обратите внимание, что создание дампа ядра из минидампа не будет содержать полный дамп памяти, а только его «тонкую» версию.
Ядро может (при определенных условиях) создавать дамп файл core(5). См. также этот вопрос. Возможно, вам придется вызвать setrlimit системный вызов для включения дампа ядра, возможно, через встроенную функцию bash ulimit.
Многие вещи можно запросить или настроить через /proc, в частности, /proc/1234/maps
показывает карту адресов процесса 1234, а /proc/1234/mem
предоставляет доступ к его адресному пространству.
gdb
часто дает команду gcore для принудительного дамп ядра.
В настоящее время Breakpad не поддерживает создание дампов памяти в Linux. Прости. При желании вы можете записать полные дампы ядра и использовать инструмент core2md в дереве Breakpad, чтобы превратить их в минидампы: http://code.google.com/p/google-breakpad/source/browse/trunk/src/tools/linux/core2md/core2md.cc