问题描述
|
更新
感谢下面的反馈,我得以了解ADPlus.vbs,它是Windows调试工具的一部分。
在运行_NT_SYMBOL_PATH之前,请不要忘记设置它。
与使用Windows崩溃时通过Windows生成的常规转储相比,使用此方法,我们可以更加清晰地看到应用程序。
非常感谢大家的答复。
原始问题
我们有一个用Visual C ++编写的服务器应用程序,有时(相对很少)在客户站点上崩溃。我们无法通过查看我们自己的日志文件来理解为什么会发生这种情况,因此下一步就是开始查看崩溃转储。
我们只是有意地在我们的应用程序中放置了一个错误(空指针),以便我们可以生成故障转储并验证所产生的转储是否有价值,但是到目前为止,我无法做出我所想的东西\正在看到。
我认为我的第一个问题是我是否已经正确设置了WinDbg(此处的其他开发人员正在将转储加载到Visual Studio 2010中,并看到了相同的错误,因此我认为这很好,或者\都错了:))-接下来的问题是,我怎么理解它在告诉我什么。
主要的困惑是转储似乎在告诉我它已经达到了断点,这对我来说很奇怪,因为没有连接调试器。
当该应用崩溃时,它正在Windows Server 2003系统上运行。我相信我已将WinDbg正确指向DLL和EXE的PDB文件。
FAULTING_IP:
ntdll!DbgBreakPoint+0
7c81a3e1 cc int 3
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c81a3e1 (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 3
Parameter[0]: 00000000
Parameter[1]: 8779fdb0
Parameter[2]: 00000003
DEFAULT_BUCKET_ID: STATUS_BREAKPOINT
PROCESS_NAME: CallPlusServerLauncher.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 8779fdb0
EXCEPTION_PARAMETER3: 00000003
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
ADDITIONAL_DEBUG_TEXT: Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[ffffffff]
FAULTING_THREAD: ffffffff
PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT
BUGCHECK_STR: APPLICATION_FAULT_STATUS_BREAKPOINT
STACK_TEXT:
1bd0ffc8 7c83fe08 00000005 00000004 00000001 ntdll!DbgBreakPoint
1bd0fff4 00000000 00000000 00000000 00000000 ntdll!DbgUiRemoteBreakin+0x36
FOLLOWUP_IP:
ntdll!DbgBreakPoint+0
7c81a3e1 cc int 3
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: ntdll!DbgBreakPoint+0
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: ntdll
IMAGE_NAME: ntdll.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 49900d60
STACK_COMMAND: ddS 1bd10000 1bd0c000 ; dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~439s; .ecxr ; kb
BUCKET_ID: MANUAL_BREAKIN
FAILURE_BUCKET_ID: STATUS_BREAKPOINT_80000003_ntdll.dll!DbgBreakPoint
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/CallPlusServerLauncher_exe/0_0_0_0/4df87414/ntdll_dll/5_2_3790_4455/49900d60/80000003/0001a3e1.htm?Retriage=1
Followup: MachineOwner
解决方法
DbgBreakPoint-在我看来,您使用远程调试器中断了执行。
如果您不这样做,那么当您打开代码页(编辑:我的意思是
page heap
)时,您会看到DbgBreakPoint出现(您应该知道是否这样做),并且检测到无效的内存访问。
, 断言也可以触发断点异常。例如,当堆由于两次删除或溢出而损坏时,我(经常)看到它们从堆中删除,然后进行删除。但是我认为只有调试运行时,您部署的内容才是?