Как я могу удалить точку останова ntdll! DbgBreakPoint + 0x1 в WinDbg - PullRequest
3 голосов
/ 01 февраля 2012

Я отлаживаю программу, которая дает сбой, с WinDbg, установленным в качестве моего посмертного отладчика.Я установил точку останова по адресу 77f7f571.Когда это срабатывало, я имел обыкновение получать следующее:

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\System32\ntdll.dll - 
ntdll!DbgBreakPoint+0x1:

Затем я следовал инструкциям http://www.osronline.com/ShowThread.cfm?link=178221,, и теперь я просто получаю

ntdll!DbgBreakPoint+0x1:

Я хотел быудалить эту точку останова, но я не могу получить ее в списке или удалить.Нет выхода ни для bl, ни для bc или bd:

0:002> bl 
0:002> bc * 
0:002> bd *

1 Ответ

2 голосов
/ 28 августа 2015

Это не точка останова, но выглядит как ручной вызов DebugBreak(), как в следующей программе:

#include "stdafx.h"
#include "windows.h"    
int _tmain()
{
    DebugBreak();
    return 0;
} 

Внутри метод вызовет исключение. Чтобы контролировать, останавливается ли WinDbg из-за исключения, используйте sxe bpe для остановки и sxi bpe для игнорирования исключения.

Чтобы попробовать это, скомпилируйте вышеуказанное приложение и запустите его под WinDbg ( Ctrl + E ). В начальной точке останова возьмите на себя управление:

(1c2c.6a8): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=00000000 ecx=779d0000 edx=0020e218 esi=fffffffe edi=00000000
eip=773e12fb esp=0038f9e8 ebp=0038fa14 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!LdrpDoDebuggerBreak+0x2c:
773e12fb cc              int     3

0:000> sxe bpe; g
(1c2c.6a8): Break instruction exception - code 80000003 (first chance)
*** WARNING: Unable to verify checksum for DebugBreak.exe
eax=cccccccc ebx=7efde000 ecx=00000000 edx=00000001 esi=0038fd44 edi=0038fe10
eip=74d5322c esp=0038fd40 ebp=0038fe10 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206
KERNELBASE!DebugBreak+0x2:
74d5322c cc              int     3

0:000> g
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=77442100 edi=774420c0
eip=7735fd02 esp=0038fd78 ebp=0038fd94 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwTerminateProcess+0x12:
7735fd02 83c404          add     esp,4

После этого эксперимента введите .restart. Затем повторите эксперимент с sxi bpe:

(109c.1c1c): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=00000000 ecx=be9e0000 edx=0009e028 esi=fffffffe edi=00000000
eip=773e12fb esp=002ff890 ebp=002ff8bc iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!LdrpDoDebuggerBreak+0x2c:
773e12fb cc              int     3

0:000> sxi bpe; g
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=77442100 edi=774420c0
eip=7735fd02 esp=002ffc20 ebp=002ffc3c iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwTerminateProcess+0x12:
7735fd02 83c404          add     esp,4

Как видите, WinDbg не остановился на KERNELBASE!DebugBreak+0x2 из-за исключения.

...