2014-01-09 3 views
1

Я пытаюсь отследить, почему происходит сбой многопоточного приложения.Печать трассировки стека в MinGW в Windows

Поэтому я устанавливаю обработчик для необработанных исключений с помощью SetUnhandledExceptionFilter, а затем разматывает и печатает трассировку стека в обработчике. Это работает.

Я пробовал много примеров из Интернета, но я всегда получаю что-то вроде этого:

1 - 0x00401ecc - Unknown Function 
2 - 0x00401e83 - Unknown Function 
3 - 0x004013fa - Unknown Function 
4 - 0x7584336a BaseThreadInitThunk 
5 - 0x77dc9f72 RtlInitializeExceptionChain 
6 - 0x77dc9f45 RtlInitializeExceptionChainPress <RETURN> to close this window... 

Никогда фактическое места, где произошла ошибка.

Может ли кто-нибудь дать реальный рабочий пример печати stacktrace для необработанного исключения в Windows? Спасибо заранее.

ответ

1

Если это происходит на машине, которую вы используете для развития:

  • использовать IDE (Eclipse CDT, Qt Creator, и т.д.) и GDB как отладчик,
  • очередь компилятор optimizatons прочь (-O0) ,
  • скомпилировать с помощью отладочных символов включен (передать флаг -ggdb3 компилятору).

Если это происходит на клиентской машине, то это более сложная ситуация, см:

Смежные вопросы