Есть ли способ генерации 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)