Есть ли способ генерации gdb-readable coredump при запуске программ, скомпилированных с помощью MinGW?
Я пытаюсь отлаживать программу Windows, скомпилированную с помощью MinGW gcc, которая только когда-либо срабатывает, когда запускается за пределами gdb (возможно, какое-то состояние гонки... прекрасное.) Проблема в том, что когда программа сработает, и я не запущен GDB, я не могу получить трассировку стека... У меня есть возможность открыть программу в MSVC при ее сбое, но MSVC не может читать символы отладки gcc, и поэтому трассировка стека, которую она мне дает, бесполезна.
Есть ли способ заставить Windows создать базовый дамп, который затем я могу открыть в MinGW gdb? В качестве альтернативы, есть способ взять трассировку стека MSVC (которая имеет необработанные адреса, но без символов) и использовать gcc для получения удобочитаемой трассировки?
Ответы
Ответ 1
окна не создают файлы ядра (на Linux они сбрасываются ядром iirc)
вы можете попытаться подключиться с помощью gdb с открытым диалоговым окном сбоя, но я сомневаюсь, что он будет работать
если вы используете msvc, вместо этого вы можете создать отладку minidump в visualstudio, но нет способа создать тот же дамп с gcc
Google разработал программное обеспечение, которое может вам пригодиться, но я не уверен, что он может производить материал с помощью gcc
http://code.google.com/p/google-breakpad/
или вы можете установить drmingw как jit debugger
drmingw -i
Я уверен, что можно получить что-то вроде backtrace также в mingw, так как mingw compiled llvm способен выгружать трассировку
http://code.google.com/p/backtrace-mingw/
выглядит проще, но я его не тестировал
скомпилировать с -g3 (и если вы можете -O0)