Windows – WinDbg中的“Break指令异常”是什么?
我正在调试一些随机的崩溃错误,但实际上很难深入.因为当我打开崩溃转储,只找到一个错误:
0:000> .exr -1 ExceptionAddress: 00000000 ExceptionCode: 80000003 (Break instruction exception) ExceptionFlags: 00000000 NumberParameters: 0 其实我没有在代码中设置任何硬代码断点,所以我在google中搜索这个异常,有人说这个异常可能是由于堆损坏引起的. 另一个问题是,我尝试使用Application Verifier检查堆损坏,我明白它是如何工作的,应用程序验证程序将在堆损坏时触发中断指令异常.但是目前我没有应用程序验证程序,谁会提出中断指令异常? 附加信息:当前线程的调用堆栈. *0:000> k ChildEBP RetAddr 0012f96c 7c827d19 ntdll!KiFastSystemCallRet 0012f970 77e6202c ntdll!NtWaitForMultipleObjects+0xc 0012fa18 7739bbd1 kernel32!WaitForMultipleObjectsEx+0x11a 0012fa74 3b288523 user32!RealMsgWaitForMultipleObjectsEx+0x141 0012fab8 3b32b9bd msenv!EnvironmentMsgLoop+0x1ea 0012fae4 3b32b94d msenv!CMsoCMHandler::FPushMessageLoop+0x86 0012fb0c 3b32b8e9 msenv!SCM::FPushMessageLoop+0xb7 0012fb28 3b32b8b8 msenv!SCM_MsoCompMgr::FPushMessageLoop+0x28 0012fb48 3b32be4e msenv!CMsoComponent::PushMsgLoop+0x28 0012fbe0 3b327561 msenv!VStudioMainLogged+0x482 0012fc0c 3000a4a6 msenv!VStudioMain+0xc1 0012fc38 30007301 devenv!util_CallVsMain+0xff 0012ff14 3000760c devenv!CDevEnvAppId::Run+0x91f 0012ff30 30007680 devenv!WinMain+0x74 0012ffc0 77e6f23b devenv!License::GetPID+0x258 0012fff0 00000000 kernel32!BaseProcessStart+0x23* 我们的应用程序是一个Visual Studio包. 以下是!analyze -v的结果 0:000> !analyze -v ******************************************************************************* * * * Exception Analysis * * * ******************************************************************************* *** WARNING: Unable to verify checksum for mscorlib.ni.dll ************************************************************************* *** *** *** *** *** Your debugger is not using the correct symbols *** *** *** *** In order for this command to work properly,your symbol path *** *** must point to .pdb files that have full type information. *** *** *** *** Certain .pdb files (such as the public OS symbols) do not *** *** contain the required information. Contact the group that *** *** provided you with these symbols if you need this command to *** *** work. *** *** *** *** Type referenced: kernel32!pNlsUserInfo *** *** *** ************************************************************************* ************************************************************************* *** *** *** *** *** Your debugger is not using the correct symbols *** *** *** *** In order for this command to work properly,your symbol path *** *** must point to .pdb files that have full type information. *** *** *** *** Certain .pdb files (such as the public OS symbols) do not *** *** contain the required information. Contact the group that *** *** provided you with these symbols if you need this command to *** *** work. *** *** *** *** Type referenced: kernel32!pNlsUserInfo *** *** *** ************************************************************************* FAULTING_IP: +0 00000000 ?? ??? EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 00000000 ExceptionCode: 80000003 (Break instruction exception) ExceptionFlags: 00000000 NumberParameters: 0 FAULTING_THREAD: 00001f1c DEFAULT_BUCKET_ID: STATUS_BREAKPOINT PROCESS_NAME: devenv.exe ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached. EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid NTGLOBALFLAG: 0 APPLICATION_VERIFIER_FLAGS: 0 MANAGED_STACK: SP IP Function 0012E584 09C8A903 Microsoft_VisualStudio_Design!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure(Int32,Int32[])+0x3b 0012E590 09C8C604 Microsoft_VisualStudio_Design!Microsoft.VisualStudio.Design.VSDesignSurfaceManager.Microsoft.VisualStudio.Shell.Interop.IVsSelectionEvents.OnElementValueChanged(UInt32,System.Object,System.Object)+0x144 StackTraceString: <none> HResult: 80004005 EXCEPTION_OBJECT: !pe 3115d464 Exception object: 3115d464 Exception type: System.Runtime.InteropServices.COMException Message: Error HRESULT E_FAIL has been returned from a call to a COM component. InnerException: <none> StackTrace (generated): SP IP Function 0012E584 09C8A903 Microsoft_VisualStudio_Design!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure(Int32,System.Object)+0x144 StackTraceString: <none> HResult: 80004005 MANAGED_OBJECT: !dumpobj 3201988 Name: System.String MethodTable: 79330a00 EEClass: 790ed64c Size: 158(0x9e) bytes (C:WINDOWSassemblyGAC_32mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll) String: Error HRESULT E_FAIL has been returned from a call to a COM component. Fields: MT Field Offset Type VT Attr Value Name 79332c4c 4000096 4 System.Int32 1 instance 71 m_arrayLength 79332c4c 4000097 8 System.Int32 1 instance 70 m_stringLength 793316e0 4000098 c System.Char 1 instance 45 m_firstChar 79330a00 4000099 10 System.String 0 shared static Empty >> Domain:Value 00219c28:03031198 << 79331630 400009a 14 System.Char[] 0 shared static WhitespaceChars >> Domain:Value 00219c28:03031798 << EXCEPTION_MESSAGE: Error HRESULT E_FAIL has been returned from a call to a COM component. MANAGED_OBJECT_NAME: System.Runtime.InteropServices.COMException LAST_CONTROL_TRANSFER: from 7c827d19 to 7c82860c PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT BUGCHECK_STR: APPLICATION_FAULT_STATUS_BREAKPOINT STACK_TEXT: 09c8a903 Microsoft_VisualStudio_Design!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure 09c8c604 Microsoft_VisualStudio_Design!Microsoft.VisualStudio.Design.VSDesignSurfaceManager.Microsoft.VisualStudio.Shell.Interop.IVsSelectionEvents.OnElementValueChanged STACK_COMMAND: dds 12e584 ; kb FOLLOWUP_IP: +9c8a903 09c8a903 8bc6 mov eax,esi SYMBOL_STACK_INDEX: 0 SYMBOL_NAME: Microsoft_VisualStudio_Design!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure+9c8a903 FOLLOWUP_NAME: MachineOwner MODULE_NAME: Microsoft_VisualStudio_Design IMAGE_NAME: Microsoft.VisualStudio.Design.dll DEBUG_FLR_IMAGE_TIMESTAMP: 0 FAILURE_BUCKET_ID: STATUS_BREAKPOINT_80000003_Microsoft.VisualStudio.Design.dll!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure BUCKET_ID: APPLICATION_FAULT_STATUS_BREAKPOINT_Microsoft_VisualStudio_Design!Microsoft.VisualStudio.NativeMethods.ThrowOnFailure+9c8a903 Followup: MachineOwner … 在托管堆栈中,有一个明确的错误,Microsoft.VisualStudio.NativeMethods.ThrowOnFailure .. !分析似乎只是转储管理级别,com例外可能是托管级别的最后一个错误. 我也从google搜索关于中断和异常的东西,通常可以在以下条件下触发break指令异常: 正确? 如果是这样,我认为应用验证者应该是寻找根本原因的最佳选择.
为了将来参考,您的调试器没有使用正确的符号警告是因为您需要将Windows符号添加到Windbg符号路径.这是怎么做到的:
自动设置Microsoft符号服务器路径: 0:000> .symfix 或者,您可以指定从其下载符号的其他位置,例如: 0:000> .sympath+ c:myproject 检查当前符号搜索路径: 0:000> .sympath 你应该看到这样的东西: SRV**http://msdl.microsoft.com/download/symbols 重新加载符号: 0:000> .reload 然后,您将可以使用以下命令查看有关当前异常的信息: 0:000> !analyze -v 您应该看到类似于以下内容的行: ExceptionCode: c0000005 (Access violation) 祝好运修错误! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- win7 环境下实现faster-rcnn
- 我可以检测到Windows PC上的视频显示是否在c#中启用了HDCP
- windows-7 – 如何在Windows中始终显示程序托盘图标*默认*?
- windows – 无法启动服务:无法加载程序集
- wcf – Azure AppFabric和Windows Server AppFabric有什么区
- listen()每个Windows版本的最大队列大小
- Windows Server 2012 – Azure在线备份状态?
- 备份到服务器2012上的磁带
- windows-server-2003 – 更换W2K3域控制器 – 我需要知道什
- “无法找到指定的过程”错误与.NET 4