Профилировщик VS2010, похоже, не разрешает символы из изображений ngen'd - PullRequest
1 голос
/ 26 июня 2010

Я профилирую службу Windows, подключая ее в режиме «выборки».

Я открываю файл результатов, представление «функции» и вижу, что «самая горячая» функция отображается как [System.Runtime.Serialization.ni.dll] без указания конкретной функции .net внутри этой сборки.

Похоже, все остальные символы из сборок ngen'd (.ni.dll) отображаются одинаково.Кроме того, я не вижу каких-либо символов из управляемых, но не ngen'd сборок в списке, что довольно странно.

Однако все нативные символы разрешаются нормально, например, "AwareLock":: Contention (int) "и т. Д.

Кроме того, на вкладке Вывод указано:

Loaded symbols for C:\Windows\assembly\NativeImages_v2.0.50727_64\System.Runtime.Seri#\12aaff696a0c54773664b4c5407deaa2\System.Runtime.Serialization.ni.dll.

Кроме того, у меня not запущен vsperfclrenv, но все разрешается врежим профилирования параллелизма, поэтому я подумал, что vsperfclrenv мне не нужен, поскольку VS2010 все для меня делает.

Я пытался запустить ngen update /debug /profile, но это ничего не изменило.

Как настроить мою среду таким образом, чтобы профилировщик выборки VS2010 разрешал символы в этих управляемых сборках?

Тем временем я попытаюсь ngen uninstall их использовать.

1 Ответ

0 голосов
/ 26 марта 2011

Когда вы открываете Отчет о производительности в VS2010, вы видите какие-либо сообщения в списке ошибок? Без правильных переменных среды компонент, необходимый для разрешения управляемых символов, не будет внедрен в процесс, и будут разрешены только собственные изображения.

Если вы профилируете сервис, вам нужно будет использовать vsperfclrenv /globalsampleon и затем перезагрузиться, чтобы убедиться, что переменные среды установлены правильно.

...