Как получить полный стек вызовов в Visual Studio 2005?

Как получить полный стек вызовов для приложения C++, разработанного в Visual Studio 2005? Я хотел бы иметь полный стек вызовов, включая код в системных библиотеках.

Нужно ли менять некоторые настройки в Visual Studio или устанавливать дополнительное программное обеспечение?

3 ответа

Решение
  1. Получить отладочную информацию для всех зависимостей проекта. Это указывается в разделе "Свойства конфигурации -> C/C++ -> General" свойств проекта.

  2. В меню выберите "Инструменты -> Параметры", затем выберите "Отладка -> Символы".

  3. Добавьте новое расположение символов (значок папки), которое указывает на бесплатный сервер символов Microsoft "symsrvsymsrv.dll c: \ symbols * http://msdl.microsoft.com/downloads/symbols"

  4. Заполните поле "Символы кэша" локально, чтобы вы не заходили в интернет все время.

Согласитесь с 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

Выполните команду стека вызовов:

т.п.н.
Другие вопросы по тегам