Visual C ++: стек вызовов при ошибке подтверждения - PullRequest
2 голосов
/ 24 декабря 2010

Можно ли вывести стек вызовов при сбое assert в режиме Release ?

Я могу видеть стек вызовов в Visual Studio, когдаСбой assert в режиме Отладка .Я скомпилировал режим Release с удаленным NDEBUG, так что утверждения скомпилированы.При сбое assert параметры подтверждения выводятся на консоль.Было бы очень полезно, если бы я мог каким-то образом получить вывод из стека вызовов .

1 Ответ

2 голосов
/ 24 декабря 2010

Есть две функции, которые должны помочь: CaptureStackBackTrace и StackWalk64 (требуется Dbghelp.dll, вот пример ).

В любом случаеоба они возвращают вам только список адресов возврата , поэтому необходимо вручную преобразовать их в имена функций.Вы можете настроить VS для создания файла MAP с адресами всех функций в вашем исполняемом файле.Вот how .

Кроме того, не забывайте, что некоторые функции могут (и будут) быть встроенными.Так что не удивляйтесь, когда вместо A -> B -> C вы увидите A -> C тэкс звонков.

...