这是由于框架版本或其他依赖关系引起的吗?
通常会抛出异常并捕获它们,而您不会看到它们。 您可能知道如何在Visual Studio中调试此问题,因此让我向您展示如何在cdb中执行此操作。
关于异常的任何信息,但您肯定知道它在幕后发生 - 启动cdb:
C:\ Program Files \ Debugging Tools for Windows(x64)> cdb-pn consoleapplication3.exe
ModLoad:000007fe`f7e90000 000007fe`f7eb4000
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.20506 \ culture.dll (ff8.17a8):断点指令异常 - 代码80000003(首次机会) ***错误:找不到符号文件。 默认导出C:\ Windows \ SYSTEM32 \ ntdll.dll的符号 - ntdll!DbgBreakPoint: 00000000`77b7d7b0 cc int 3 继续调试:0:004> g
异常 - 大量异常:
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
(ff8.1860):断点指令异常 - 代码80000003(首次机会)
在CLR异常中断:
0:004> sxe clr
0:004> g
(ff8.16dc):CLR异常 - 代码e0434352(首次机会)
在任何异常处理之前报告首次机会异常。
可能会预期和处理此异常。
***错误:找不到符号文件。 默认导出C:\ Windows \ system32 \ KERNELBASE.dll的符号 - KERNELBASE!RaiseException + 0x3d:000007fe`fdb8bb5d 4881c4c8000000 add rsp,0C8h
加载sos(在.NET 2/3中使用“!loadby sos mscorwks”):
0:000> !loadby sos clr
查看堆栈:
0:000> !CLRStack
PDB symbol for clr.dll not loaded
OS线程Id: 0x16dc (0)
子堆栈指针(SP) 指令指针(IP) 调用站点(Call Site)
000000000096e6a8 000007fefdb8bb5d [HelperMethodFrame: 000000000096e6a8]
000000000096e7c0 000007ff00170360
ConsoleApplication3.Program.ThrowAndCatchException()
000000000096e810 000007ff001701fb
ConsoleApplication3.Program.Main(System.String[])
000000000096ec90 000007feef474ca4 [GCFrame: 000000000096ec90]
查看异常信息:
0:000> !PrintException
异常对象: 0000000002c88c18
异常类型: System.NotImplementedException
消息: 方法或操作未实现。
内部异常:
StackTrace (generated):
StackTraceString:
HResult: 80004001
0:000>
我非常担心这个错误,因为我的电脑上什么都无法正常工作:在尝试打开时设置会关闭,Windows快速搜索无法使用,Visual Studio也会出现此错误而崩溃。
两个小时后,我发现在时钟底部附近有一个新的键盘语言:它是ENG,而不是长名称。我切换回普通的键盘语言,突然一切都恢复正常了。看来这个键盘语言在某种程度上不被Windows支持,导致了问题的出现。