“Символы не могут быть загружены” при попытке считать дамп

Статические переменные и глобальные переменные инициализируются до нуля:

Global:
int a;  //a is initialized as 0

void myfunc(){
   static int x;     // x is also initialized as 0
   printf("%d", x);}

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

void myfunc2(){
   int x;        // value of x is assigned by compiler it can even be 0
   printf("%d", x);}

В основном это зависит от компилятора, но в большинстве случаев это значение считается принятым в качестве 0 по усмотрению

7
задан Thomas Weller 7 September 2015 в 20:56
поделиться

5 ответов

Я обычно перехожу к Системной панели управления, затем Вкладка "Дополнительно", затем Среда. Можно затем добавить необходимое _NT_SYMBOL_PATH переменная. Затем Вы ничего не должны делать на командной строке прежде, чем выполнить WinDbg.

Установка srv*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols как предложено staffan прекрасен. Я обычно предпочитаю использовать свой собственный профиль для хранения символов, хотя (так, чтобы я не должен был редактировать полномочия для C:\Windows\Symbols, так как я намеренно работаю как ограниченный пользователь для хорошей гигиены безопасности). Таким образом (в моем случае) мой _NT_SYMBOL_PATH srv*C:\Documents and Settings\cky\symbols*http://msdl.microsoft.com/download/symbols.

Надеюсь, это поможет. :-)

10
ответ дан 6 December 2019 в 06:38
поделиться

Быстрый ответ к

c:\> устанавливает _NT_SYMBOL_PATH=SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols

прежде, чем запустить windbg.

9
ответ дан 6 December 2019 в 06:38
поделиться

Как @Vaibhav отмеченный, на самом деле необходимо загрузить символы и настроить windbg для использования их.

Также отметьте следующее:! шумный sym - Активирует шумный символ, загружающийся lm v - Использование с "m" параметром для рассмотрения информации для загруженного модуля. см ЛБМ D - Список все модули w/o символы.

1
ответ дан 6 December 2019 в 06:38
поделиться

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

Вот ссылка, которая говорит об этом подробно: http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx

3
ответ дан 6 December 2019 в 06:38
поделиться

Более быстрый ответ:

!symfix

Но это влияет только на текущий windbg / ntsd / cdb / kd.

4
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

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