Как получить полный стек вызовов в Visual Studio 2005?
Как получить полный стек вызовов для приложения C++, разработанного в Visual Studio 2005? Я хотел бы иметь полный стек вызовов, включая код в системных библиотеках.
Нужно ли менять некоторые настройки в Visual Studio или устанавливать дополнительное программное обеспечение?
3 ответа
Получить отладочную информацию для всех зависимостей проекта. Это указывается в разделе "Свойства конфигурации -> C/C++ -> General" свойств проекта.
В меню выберите "Инструменты -> Параметры", затем выберите "Отладка -> Символы".
Добавьте новое расположение символов (значок папки), которое указывает на бесплатный сервер символов Microsoft "symsrvsymsrv.dll c: \ symbols * http://msdl.microsoft.com/downloads/symbols"
Заполните поле "Символы кэша" локально, чтобы вы не заходили в интернет все время.
Согласитесь с Clay, но для Symbols Server вы должны получить последнюю версию symsrv.DLL из "Отладочных инструментов для Windows", которую можно загрузить бесплатно для Microsoft.
(Поскольку вы явно спросили, что вам нужно скачать, я полагаю, у вас его еще нет)
Или, при желании (при условии, что Visual Studio не установлена), возьмите копию средств отладки Windows, установите и запустите приложение из отладчика (windbg.exe) или подключите его к уже запущенному приложению:
windbg [.exe] -pn program.exe
или же
windbg[.exe] -p process_id
Перерыв в отладчике в точке, которую вы хотите наблюдать для трассировки стека (Ctrl+Break). Переключитесь на интересующий поток (скорее всего, основной поток выполнения):
~ 0s
Исправьте символы для системных модулей (и, возможно, для приложения, если таковые имеются):
* исправить символы для приложения
.sympath path_to_app_symbols
* настроить, где отладчик будет загружать и хранить системные символы
.symfix + path_where_system_symbols_will_be_stored
* заставить отладчик перезагружать символы
.reload
Выполните команду стека вызовов:
т.п.н.