Есть ли способ генерировать gdb-читаемый coredump при запуске программ, скомпилированных с MinGW? - PullRequest
15 голосов
/ 28 апреля 2011

Я пытаюсь отладить программу Windows, скомпилированную с использованием gcc MinGW, который когда-либо работает с ошибками только при запуске вне gdb (возможно, какое-то состояние гонки ... прекрасно.) и я не запускаю GDB, я не могу получить трассировку стека ... У меня есть возможность открыть программу в MSVC, когда она падает, но MSVC не может прочитать символы отладки gcc и, таким образом, дает трассировку стека я бесполезен.

Есть ли способ заставить Windows создать дамп ядра, который я потом смогу открыть в gdb MinGW? В качестве альтернативы, есть ли способ взять трассировку стека MSVC (которая имеет необработанные адреса, но без символов) и использовать gcc для получения удобочитаемой трассировки?

1 Ответ

9 голосов
/ 30 мая 2011

windows не создает файлы ядра (в linux они выводятся ядром iirc) вы можете попытаться подключиться с помощью gdb с открытым диалогом сбоя, но я сомневаюсь, что он будет работать

если вместо этого вы используете msvc, вы можете создать отладочную мини-дамп в visualstudio, но нет способа создать такой же дамп с помощью gcc

Google создал программное обеспечение, которое может оказаться полезным, но я не уверен, что оно может производить вещи с помощью gcc

http://code.google.com/p/google-breakpad/

или вы можете установить drmingw в качестве jit-отладчика

drmingw -i

Я уверен, что на mingw можно получить что-то похожее на обратную трассировку, так как скомпилированный mingw llvm может вывести трассировку

http://code.google.com/p/backtrace-mingw/

выглядит проще, но я не проверял

скомпилировать с -g3 (и если вы можете -O0)

...