Статические переменные и глобальные переменные инициализируются до нуля:
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 по усмотрению
Я обычно перехожу к Системной панели управления, затем Вкладка "Дополнительно", затем Среда. Можно затем добавить необходимое _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
.
Надеюсь, это поможет. :-)
Быстрый ответ к
c:\> устанавливает _NT_SYMBOL_PATH=SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols
прежде, чем запустить windbg.
Как @Vaibhav отмеченный, на самом деле необходимо загрузить символы и настроить windbg для использования их.
Также отметьте следующее:! шумный sym - Активирует шумный символ, загружающийся lm v - Использование с "m" параметром для рассмотрения информации для загруженного модуля. см ЛБМ D - Список все модули w/o символы.
на самом деле необходимо или загрузить символы на компьютер или настроить его для загрузки, когда Вы идете, если Вы онлайн при отладке.
Вот ссылка, которая говорит об этом подробно: http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx
Более быстрый ответ:
!symfix
Но это влияет только на текущий windbg / ntsd / cdb / kd.