Разрешение символа WinDbg

Использование первого не является по своей сути более безопасным, чем последнее, вам необходимо дезинформировать ввод, является ли он частью массива параметров или простой переменной. Поэтому я не вижу ничего плохого в использовании последней формы с $table, если вы убедитесь, что содержание $table безопасно (alphanum plus underscores?) Перед его использованием.

34
задан krebstar 23 January 2009 в 03:03
поделиться

4 ответа

Извините за поздний ответ.
В Вашем сообщении Вы упоминаете наблюдение следующего сообщения об ошибке.

*** WARNING: Unable to verify checksum for C:\TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll

Вы также задаете вопрос, "где я помещаю свои символы для моего DLL в пути символа?"

Вот ответ для первой проблемы:

Шаги для идентификации символов, которым не соответствуют.

  1. ! sym, шумный
  2. .reload
  3. x MyDll! *class*
    *Это перезагружает Ваш dll, альтернативно можно ввести Кбит для отображения стека вызовов DLL, который должен загрузить его также.
  4. ! sym, тихий
    *спина Сброса к исходному тихому символу, загружающемуся

Также, можно работать

0:001> lmv m myDll  *(and examine the Checksum)

Примечание: Если у Вас есть контрольная сумма, то Windbg может соответствовать контрольной сумме DLL против контрольной суммы PDB. Каждая среда разработки имеет различный способ генерировать контрольную сумму.

Вот ответ для вопросов о том, куда поместить PDBs

, Если у Вас есть MyDll.pdb, добавленный к хранилищу символьной информации затем, можно использовать следующий синтаксис

.sympath SRV*c:\symcache*http://msdl.microsoft.com/download/symbols 

, Как Roger предположил выше...

Однако, если у Вас просто есть PDB локально, можно хотеть поместить путь к PDB сначала перед выходом в сервер символов как это

.sympath C:\TheProgram\SomeSubfolder\AnotherSubfolder\;SRV*c:\symcache*http://msdl.microsoft.com/download/symbols

Этот способ, которым Windbg должен выглядеть локальным для SomSubFolder dir прежде, чем попытаться использовать кэш Сервера Символов.

Спасибо, Aaron

46
ответ дан AaronBa 11 October 2019 в 06:56
поделиться

Не имеет значения, куда Вы помещаете частные файлы символов, пока Вы в состоянии сказать отладчик, где они.

предупреждение Вы видите , не делает , имеют любой эффект на отслеживание стека, но факт, Вы - отсутствующие символы для caller.DLL, и app.EXE делает .

символы Конфигурирования в windbg (локально) так же просто как использование:

.sympath [+] path_to_pdbs

.symfix + path_to_system_pdb_store

Вы наблюдение:

MyDll! Класс А:: AFunction+SomeHexAddress
на самом деле ничего не означает, пока SomeHexAddress разумен (и при условии, что MyDll.pdb был найден и загружен!) - это похоже на надлежащую запись стека вызовов.

Теперь, мой вопрос был бы, какова проблема, с которой Вы застреваете?

P.S. Вам не нужен .map файл с windbg.

4
ответ дан RJFalconer 11 October 2019 в 06:56
поделиться

Одна опция состоит в том, чтобы оставить файлы символов, где они ( т.е. в выходной папке сборки ) и затем используют параметр командной строки-y WinDbg для определения местоположения этих файлов. Используя этот подход должен гарантировать, что файлы символов всегда быть актуальными.

От Microsoft Help:

-y SymbolPath 
Specifies the symbol search path. Separate multiple paths with a 
semicolon (;). If the path contains spaces, it should be enclosed 
in quotation marks. For details, and for other ways to change this 
path, see Symbol Path. 
2
ответ дан jussij 11 October 2019 в 06:56
поделиться

Как часть нашего процесса сборки, мы копируем частные файлы PDB и выпущенные файлы EXE/DLL к серверу символов. В его самом простом это - просто путь UNC, но можно настроить его для доступа с помощью HTTP.

Для копирования выходных файлов используйте программу SYMSTORE.EXE.

Затем настройте свой отладчик (мы используем Visual Studio и WinDbg) смотреть в том пути. Для WinDbg самый простой способ сделать это должно установить переменную среды:

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

(который должен все быть на одной строке)

Это настраивает WinDbg, чтобы считать Microsoft Symbol Server (кэширующий файлы в C:\WebSymbols) и также посмотреть в локальном хранилище символьной информации (\\symsvr\Symbols).

Мы также используем инструменты Source Server для хранения деталей SVN в файле PDB, подразумевая, что мы можем возвратиться к точному исходному файлу, используемому для создания конкретного выпуска. Посмотрите в ...\Debugging Tools for Windows (x86)\srcsrv.

3
ответ дан Roger Lipscombe 11 October 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: