当使用Windbg在另一台机器上调试在VS2012中编写的C#应用程序时,我遇到以下错误(它在开发机器上运行,但不在另一台测试机器上运行)
ModLoad: 00fd0000 01146000 ECM.exe
ModLoad: 77400000 7753c000 ntdll.dll
ModLoad: 6fca0000 6fcea000 C:\Windows\SYSTEM32\MSCOREE.DLL
ModLoad: 76240000 76314000 C:\Windows\system32\KERNEL32.dll
ModLoad: 756c0000 7570b000 C:\Windows\system32\KERNELBASE.dll
(470.fb8): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=00000000 ecx=0015f588 edx=774470f4 esi=fffffffe edi=00000000
eip=774a05a6 esp=0015f5a4 ebp=0015f5d0 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!LdrpDoDebuggerBreak+0x2c:
774a05a6 cc int 3
按g继续我得
ModLoad: 759d0000 75a70000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 760f0000 7619c000 C:\Windows\system32\msvcrt.dll
ModLoad: 775e0000 775f9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76540000 765e2000 C:\Windows\system32\RPCRT4.dll
ModLoad: 6e3e0000 6e45b000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll
ModLoad: 75dc0000 75e17000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 77590000 775de000 C:\Windows\system32\GDI32.dll
ModLoad: 75cf0000 75db9000 C:\Windows\system32\USER32.dll
ModLoad: 75f60000 75f6a000 C:\Windows\system32\LPK.dll
ModLoad: 75800000 7589d000 C:\Windows\system32\USP10.dll
ModLoad: 75f70000 75f8f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75e80000 75f4c000 C:\Windows\system32\MSCTF.dll
ModLoad: 69670000 69d0b000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
ModLoad: 6b1f0000 6b2c3000 C:\Windows\system32\MSVCR110_CLR0400.dll
(470.fb8): Unknown exception - code 04242420 (first chance)
ModLoad: 68640000 6966e000 C:\Windows\assembly\NativeImages_v4.0.30319_32 \mscorlib\ce5f61c5754789df97be8dc991c47d07\mscorlib.ni.dll
ModLoad: 75f90000 760ec000 C:\Windows\system32\ole32.dll
ModLoad: 75350000 7535c000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 74200000 74240000 C:\Windows\system32\uxtheme.dll
ModLoad: 711d0000 71228000 C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll
ModLoad: 75c10000 75c9f000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74910000 74919000 C:\Windows\system32\version.dll
ModLoad: 6c810000 6c88d000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
ModLoad: 6bb80000 6bbd2000 DCLib.dll
ModLoad: 003f0000 00442000 DCLib.dll
ModLoad: 74e70000 74e86000 C:\Windows\system32\CRYPTSP.dll
ModLoad: 74c10000 74c4b000 C:\Windows\system32\rsaenh.dll
ModLoad: 753f0000 753fe000 C:\Windows\system32\RpcRtRemote.dll
ModLoad: 590b0000 59a4a000 C:\Windows\assembly\NativeImages_v4.0.30319_32\System\ff26cc03e6d57d8abd13b990332e67c6\System.ni.dll
ModLoad: 6ba90000 6bb80000 C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Configuration\bbc48ec4245e502ae19b0601d3799c9e\System.Configuration.ni.dll
ModLoad: 6a210000 6a3a4000 C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Drawing\5cd2aee5e7c07227c694d89219688ab3\System.Drawing.ni.dll
ModLoad: 566f0000 5733f000 C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Windows.Forms\f4f6ee0df2aa4189bf36e6335cb92761\System.Windows.Forms.ni.dll
ModLoad: 6cc50000 6cc62000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\nlssorting.dll
ModLoad: 67ee0000 68631000 C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Xml\bada32953bb6b16a53d653eae23d78dc\System.Xml.ni.dll
(470.fb8): C++ EH exception - code e06d7363 (first chance)
(470.fb8): C++ EH exception - code e06d7363 (first chance)
(470.fb8): C++ EH exception - code e06d7363 (first chance)
(470.fb8): CLR exception - code e0434352 (first chance)
(470.fb8): C++ EH exception - code e06d7363 (first chance)
(470.fb8): CLR exception - code e0434352 (first chance)
(470.fb8): CLR exception - code e0434352 (first chance)
ModLoad: 6a130000 6a204000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\diasymreader.dll
(470.fb8): CLR exception - code e0434352 (!!! second chance !!!)
eax=0015e804 ebx=00000005 ecx=00000005 edx=00000000 esi=0015e8c4 edi=00000001
eip=756c812f esp=0015e804 ebp=0015e854 iopl=0 nv up ei pl nz ac po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000212
KERNELBASE!RaiseException+0x58:
756c812f c9 leave
我已经输入.loadby sos clr和!pe,并提供以下内容
c0000005 Exception in C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.pe debugger extension.
PC: 6b3d42c3 VA: 00000000 R/W: 0 Parameter: 0001007f
谷歌搜索我只能找到未答复的http://social.msdn.microsoft.com/Forums/en-US/6a0af34b-ce48-4dcb-8b87-ed80f9477a86/windbg-clrjitdll-exception?forum=architecturegeneral。谷歌搜索进一步发现"!dumpheap -type Exception"这给了
688391fc 1 12 System.Text.DecoderExceptionFallback
688391b8 1 12 System.Text.EncoderExceptionFallback
68842570 1 84 System.ExecutionEngineException
6884252c 1 84 System.StackOverflowException
688424e8 1 84 System.OutOfMemoryException
68842394 1 84 System.Exception
6883c644 1 96 System.IO.FileNotFoundException
688425b4 2 168 System.Threading.ThreadAbortException
6884b940 2 176 System.TypeInitializationException
这让我回到了TypeInitializationException,我在其他地方已经读过加载ExecutionEngineException,StackOverflowException和OutOfMemoryException总是会发生,所以当它们发生时它们可以被抛出而不需要在那时创建它们。
远程调试和检查所有Thrown异常最终会提供以下信息:
The assembly with display name 'DCLib' failed to load in the 'Load' binding context of the AppDomain with ID 1. The cause of the failure was: System.BadImageFormatException: Could not load file or assembly 'DCLib, Version=1.0.0.3, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
我发现BadImageFormatException与在32位系统上调用的64位软件有关,所以我使用Wow64DisableWow64FsRedirection来输出代码,这样我就需要一个组件才能在我的开发机器上运行。然后程序实际上在VS调试器内部远程启动,但只有在单击继续几次之后,并且由于程序仍然没有在测试机器上启动,所以至少有一条我点击的消息需要解决还有...
第二个问题也是TypeInitializationException,当测试机器上安装的SQL Server是SQL Server 2008时,它搜索了一些SQL Server 2012类或dll。安装SQL Server 2012后,一切正常。非常方便的是,.Net应用程序不仅会在日志文件或其中搜索并找不到的内容中进行说明,而是仅仅崩溃并且无需任何操作,并且需要执行远程调试会话才能找到。
答案 0 :(得分:1)
含义:
异常代码e0434352
可以是任何东西。它只是表示CLR异常,其中有许多类型。要获得更多信息,您必须使用SOS.dll
!PrintException
之类的内容
一些建议:
好像你是WinDbg的新手。如果您更熟悉Visual Studio调试器,则可以更好地在测试计算机上安装Remote Debugging Tools并在开发计算机上从VS2012的完整实例进行调试。这并不是说你学习使用WinDbg不会受益。 :)
心灵调试:
如果我几乎没有任何证据对实际问题进行猜测,会有什么乐趣?
鉴于您的代码在开发机器上而不是在测试机器上工作,并且在加载diasymreader.dll
之后抛出异常的事实,我猜测某些代码正在尝试解析一个符号名称,可能使用System.Diagnostics.SymbolStore
并且它没有像在开发机器上那样找到pdb文件。
同样,这只是一个疯狂的猜测。在相信我的心理调试能力之前,您应该使用SOS
WinDbg扩展或Visual Studio调试器来解决问题 - 但如果我是对的,请务必告诉我。