Как я могу заставить Very Sleepy профилировщик распознавать имена функций в бинарном C++?
У меня есть инструмент, который представляет собой смешанный C#/ управляемый C++/ неуправляемый C++, созданный с помощью Visual Studio 2010. Код фактически распределяется по.exe (я назову его mybinary.exe) и.dll (mylib.dll.)
Я установил параметры сборки для проекта для dll и exe, чтобы генерировать файлы PDB в выпусках сборки. Я убедился, что файлы PDB находятся в одном и том же каталоге, в котором находятся exe и pdb. Но я все еще не вижу имен функций при отладке этой программы; Я просто вижу адреса. Вот соответствующая выдержка из того, что я получаю в маленькой строке состояния внизу, когда я выбираю программу на первом экране Very Sleepy:
DBGHELP: mybinary.vshost - public symbols
C:\Users\(me)\AppData\Local\sleepy\vshost32-clr2.pdb\(long hex string)\vshost32-clr2.pdb
...
DBGHELP: No debug info for C:\myproj\mylib.dll. Searching for dbg file
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\symbols\dll\mylib.dbg - path not found
SYMSRV: C:\Users\peastlund\AppData\Local\sleepy\mylib.dbg\4EF1F48B13c000\mylib.dbg not found
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\symbols\dll\mylib.dbg - path not found
DBGHELP: C:\myproj\mylib.dbg - file not found
DBGHELP: C:\myproj\mylib.dll missing debug info. Searching for pdb anyway
DBGHELP: mylib - public symbols
C:\myproj\mylib.pdb - unmatched
...
DBGHELP: MOD: mybinary.vshost
...
DBGHELP: mybinary - private symbols & lines
C:\myproj\mybinary.pdb
Таким образом, похоже, что существует проблема с сопоставлением mylib.pdb к mylib.dll, по какой-то причине мне неясно, но я отмечу, что я не получаю правильные адреса для функций, которые тоже есть в mybinary.exe. У меня новый компьютер со всеми последними установками, так что это не проблема устаревшей библиотеки.
Очень признателен, если кто-нибудь может помочь с этим!
РЕДАКТИРОВАТЬ: На самом деле оказывается, что это не относится к оптимизированному коду. У других профилировщиков были некоторые проблемы с оптимизированным C++, поэтому я перешел на Very Sleepy, но при тестировании я понимаю, что с Very Sleepy я не могу получить имена функций, даже когда я компилирую в режиме отладки.
1 ответ
Убедитесь в следующем:
- Вы установили путь поиска символов (инструменты-> опции) на ваш локальный путь
- Сначала запустите ваше приложение, затем запустите сонный и профиль
- Прекратить профилирование до завершения приложения