Команда WinDbg! Heap не работает из-за отсутствия символов - PullRequest
4 голосов
/ 04 августа 2011

Я пытаюсь использовать WinDbg для отладки моего приложения .NET с неуправляемым распределением памяти в C ++.

Когда я пытаюсь выполнить команду ! Heap , я получаю следующее сообщение об ошибке:

0:022> !heap
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\KERNEL32.dll - 
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: ntdll!_HEAP_ENTRY                             ***
***                                                                   ***
*************************************************************************
Invalid type information

Как я могу исправить эту ошибку?

Ответы [ 3 ]

5 голосов
/ 04 августа 2011

Используйте следующие команды, чтобы исправить ваш путь к символу:

.symfix
.reload
3 голосов
/ 04 августа 2011

Настройка сервера символов. Выполните следующие шаги:

  1. Создать локальный каталог для загружаемых символов. Я буду использовать "C: \ Symbols".
  2. Выберите «Путь к символьному файлу ...» в меню «Файл».
  3. Введите "SRV * C: \ Symbols *http://msdl.microsoft.com/download/symbols" и нажмите" ОК ".
  4. Попробуйте еще раз. Первоначально будет задержка, пока символы загружаются. В дальнейшем будут использоваться локальные копии (шаг 1).

Подробнее см. здесь .

1 голос
/ 04 августа 2011

Вам необходимо установить символы для вашего приложения, а также указать его на сервере символов Windows.Для сервера символов Windows вы можете делать то, что говорит Стив.

"SRV * C: \ Symbols *http://msdl.microsoft.com/download/symbols"

После этого установите! Sym noisy, который будет выполнять загрузку символов в подробном режиме.

Выполните .reload, и это позволит вам узнать, какие символы необходимы, но не найдены.

Если вы уже знаете расположение pdbs для вашего приложения, укажите путь к символу и повторите описанные выше шаги, чтобы сделатьубедитесь, что все необходимые символы загружены.

...