Получение link.exe, lib.exe, editbin.exe и dumpbin.exe для использования сервера символов
У меня есть WinDbg для загрузки символов в символы c:\. Символы для advapi32 (например) находятся в c:\symbols\advapi32.pdb\3F32049F550C42B09CF114A1FB8A97E92\advapi32.pdb
, Единственный способ, которым я получил link.exe, и эти другие заглушки exe для использования этих символов, это на самом деле быть в каталоге c:\symbols\advapi32.pdb\3F32049F550C42B09CF114A1FB8A97E92
, Так например dumpbin /exports c:\Windows\SysWOW64\advapi32.dll
возвращает оформленные имена в этой папке следующим образом:
1770 301 000455C6 UnregisterIdleTask = _UnregisterIdleTask@12
1771 302 UnregisterTraceGuids (forwarded to ntdll.EtwUnregisterTraceGuids)
1772 303 000595D8 UpdateTraceA = _UpdateTraceA@16
1773 304 000595F9 UpdateTraceW = _UpdateTraceW@16
1774 305 00042BB6 UsePinForEncryptedFilesA = _UsePinForEncryptedFilesA@12
1775 306 00042BFF UsePinForEncryptedFilesW = _UsePinForEncryptedFilesW@12
И при запуске из другой папки он возвращает:
1770 301 000455C6 UnregisterIdleTask
1771 302 UnregisterTraceGuids (forwarded to ntdll.EtwUnregisterTraceGuids)
1772 303 000595D8 UpdateTraceA
1773 304 000595F9 UpdateTraceW
1774 305 00042BB6 UsePinForEncryptedFilesA
1775 306 00042BFF UsePinForEncryptedFilesW
Можно ли заставить dumpbin использовать библиотеки, загруженные сервером символов?
1 ответ
Нашел ответ на странице msdn для путей символов.
На этой странице говорится, что отладчики Windows получают свой список символов из трех мест:
- Список времени выполнения, установленный через меню windbg и команду .sympath, например
.sympath srv*c:\MyServerSymbols*http://msdl.microsoft.com/download/symbols
- _NT_ALT_SYMBOL_PATH переменная окружения
- _NT_SYMBOL_PATH переменная окружения
Так просто зовет SET _NT_SYMBOL_PATH=symsrv*symsrv.dll*c:\symbols2*http://msdl.microsoft.com/download/symbols
или добавление этого значения в вашу постоянную среду (например, через setx) приведет к загрузке символов.