Как я могу заставить Very Sleepy профилировщик распознавать имена функций в двоичном C ++? - PullRequest
5 голосов
/ 21 декабря 2011

У меня есть инструмент, который представляет собой смешанный 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 Ответ

0 голосов
/ 12 февраля 2018

Убедитесь в следующем:

  1. Вы задали путь поиска символов (tools-> options) для вашего локального пути
  2. Сначала запустите ваше приложение, затем запустите sleepy и профиль
  3. Прекратить профилирование до завершения работы приложения
...