Заставить WinDbg загрузить pdb с помощью `.reload` не работает

У меня есть дамп, собранный для моего исполняемого файла App.exe: App.DMP

К сожалению, мы не сохранили .pdb для этой конкретной сборки, но так как у нас есть номер сборки, мы могли бы перестроить ту же версию и восстановить .pdb

Это не помогло, и я не мог загрузить символы с Visual Studio,

Поэтому я попытался открыть дамп с WinDbg и принудительно загружать символы, которые должны соответствовать инструкции:

0:000> !sym –noisy
0:000> .reload /f /i C:\Tests\dump-e\App.exe
SYMSRV:  BYINDEX: 0x34
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
SYMSRV:  BYINDEX: 0x35
https://msdl.microsoft.com/download/symbols
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pdb
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pd_

SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/file.ptr
SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV:  RESULT: 0x80190194
SYMSRV:  BYINDEX: 0x36
c:\tests\dump
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV:  UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV:  RESULT: 0x80070003
DBGHELP: Failed copying the file 'D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb' to the cache
DBGHELP: D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb - file not found
*** WARNING: Unable to verify checksum for App.exe
*** ERROR: Module load completed but symbols could not be loaded for App.exe
DBGHELP: App - no symbols loaded

Почему не работает силовая нагрузка? с чем это D: привод? У меня нет такого диска .. это связано с этим GUID (CEE75F0AAD5348458938777BBD4165B01) не совпадает с моим дампом? Разве сила не должна покрывать это?

2

Решение

Все символы и файл изображения имеют контрольные суммы во время компиляции, поэтому перестройка одной и той же сборки не приводит к «совместимой» PDB для отладки системы.

Использование силы с новым перестроенным образом может привести к схожей сборке, достаточной для диагностики сбоя. Но такие оптимизации, как оптимизация всей программы, инкрементное связывание и оптимизация по профилю, могут привести к незначительным различиям в символах.

использование .symopt SYMOPT_LOAD_ANYTHING и поместите недавно построенный pdb и бинарный файл в начало пути поиска.

Место, проверенное windgb,
а) выходной каталог ссылок,
б) пути на пути символа.

Это означает, что когда вы собираете двоичный файл и отлаживаете его на том же компьютере, он обычно находит правильное значение. D: это каталог сборки вашего сервера сборки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector