Почему после установки _NT_SYMBOL_PATH мои локальные библиотеки загружаются вечно - PullRequest
3 голосов
/ 23 августа 2010

Я настроил _NT_SYMBOL_PATH и указал на

srv*c:\symbols*http://msdl.microsoft.com/download/symbols

При запуске отладчика я замечаю, что связанные с Windows библиотеки загружаются быстро. Тем не менее, dll нашей компании очень долго загружается. Когда я избавляюсь от _NT_SYMBOL_PATH, перезапускаю Visual Studio, тогда все загружается довольно быстро (хотя у меня нет символов MS).

Это почти так, как будто сервер символов выше ищет pdbs моей внутренней компании dll вместо того, чтобы сначала проверить, существуют ли они локально. Некоторые из этих библиотек у меня нет pdbs для. Некоторые из них являются частью моего решения, поэтому я создаю их при отладке и всегда имею pdbs.

Как Visual Studio ищет символы? Могу ли я в любом случае контролировать, как Visual Studio ищет символы? Могу ли я прямо сказать, что для dll из данного каталога не нужно искать символы? Есть ли что-нибудь еще, что может повлиять на скорость загрузки символов, или что я могу сделать, чтобы ускорить процесс?

Ответы [ 2 ]

9 голосов
/ 23 августа 2010

Visual Studio ищет _NT_SYMBOL_PATH до любых путей, настроенных внутри Visual Studio. Это «особенность» отладочного движка. Это означает, что серверы символов Microsoft будут искать ваши символы.

В Visual Studio 2010 они сделали это явным образом (если он установлен), включая _NT_SYMBOL_PATH в диалоге символов отладки. К сожалению, эту запись нельзя перемещать вверх или вниз .

Чтобы обойти это, поместите свой сервер символов в _NT_SYMBOL_PATH перед Microsoft:

_NT_SYMBOL_PATH=cache*C:\symbols;\\mysymsvr\Symbols;SRV*C:\symbols*http://msdl.microsoft.com/download/symbols

2 голосов
/ 23 августа 2010

В дополнение к правильному ответу @ Roger's.

Если вы отлаживаете в Visual Studio, я бы не стал использовать переменную среды _NT_SYMBOL_PATH в пользу использования настроек Visual Studio.

Инструменты -> Параметры -> Символы отладки

В 2010 году это обеспечивает большую степень детализации, чем исходный маршрут переменной среды.Например, вы можете отфильтровать список библиотек DLL, для которых Visual Studio пытается загрузить символы по умолчанию.Это очень ценно в больших проектах, где вы заинтересованы только в небольшом подмножестве DLL и хотите сократить время загрузки.

...