从Visual C App了解崩溃转储
UPDATE
感谢下面的反馈,我能够使用ADPlus.vbs,它是Windows调试工具的一部分. 在运行之前不要忘记设置_NT_SYMBOL_PATH. 使用这个,我们已经能够更清楚地看到应用程序,它比我们使用应用程序崩溃时通过Windows生成的常规转储更加清晰. 非常感谢大家的回复. 原始问题 我们有一个用Visual C编写的服务器应用程序,有时(相对很少)在客户站点上崩溃.我们无法理解为什么会在查看我们自己的日志文件时发生这种情况,因此下一步是开始查看故障转储. 我们只是故意在我们的应用程序中添加一个错误(一个空指针),这样我们就可以生成一个崩溃转储并验证生成的转储是否有价值,但到目前为止我无法做出我的头或尾看到. 我想我的第一个问题是我是否已经正确设置了WinDbg(这里的其他开发人员正在将转储加载到Visual Studio 2010并看到相同的错误,所以我假设它很好,或者我们都错了: )) – 然后接下来的问题是,我如何理解它告诉我的内容. 主要的困惑是转储似乎告诉我它已达到一个断点,这对我来说似乎很奇怪,因为没有连接调试器. 该应用程序在崩溃时在Windows Server 2003系统上运行.我相信我已经正确地将WinDbg指向PDB文件中的DLL和EXE. 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 – 看起来就像你使用远程调试器破坏了执行.
如果你没有,那么当你有代码页(编辑:我的意思是页面堆)打开时我会看到DbgBreakPoint出现(你应该知道你是否这样做了)并且检测到无效的内存访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |