Я пытаюсь использовать WinDBG и написал простой hello world на ASM (работает в Windows XP).
Теперь я был немного удивлен, когда я запускаю его, WinDBG всегда останавливается в ntdll, когда я загружаю процесс:
ntdll!DbgBreakPoint:
7c90120e cc int 3
7c90120f c3 ret
Обычно я ожидаю, что отладчик остановится на первой инструкции нового процесса, а не где-то в ядре. Теперь я могу использовать:
bp start
где start
— моя точка входа. Но мне приходится делать это всегда вручную. Есть ли способ указать WinDBG, что он должен начать отладку в моей программе, а не где-то еще? Почему он не делает это автоматически? Я заметил такое же поведение и в GDB, но, по крайней мере, GDB автоматически устанавливает точку останова в main()
(по крайней мере, для программ на C).
.reload
? (я попробую). 01.10.2013-W
, не знаете, как запустить WinDbg через IDE, но вы все равно можете передать аргумент командной строки, это важно, если вы делаете это, чтобы exe, который вы запускаете (если вы открываете exe и не подключаетесь к запущенному процессу), был последним аргументом. 01.10.2013bu
вместоbp
. Из debugger.chm, поставляемого с windbg: Точки останова, установленные с помощью bp, не сохраняются в рабочих пространствах WinDbg. Точки останова, установленные с помощью bu, сохраняются в рабочих пространствах. 02.10.2013