我的应用程序首先从数据库中读取数据,然后创建要上载到SFTP服务器的XML文档。
当我运行应用程序时出现错误:
VShost32.exe stopped working
当我在调试模式下运行应用程序并逐步执行它时,我发现错误弹出的点,但我仍然可以继续执行下一步(只要我不关闭弹出窗口) 。然后,应该完成的一切都完成了。没问题。
那么为什么我会收到此错误消息?它完全不清楚导致它的原因。
另外,我怎么能摆脱它?
答案 0 :(得分:7)
VSHost32.exe是Visual Studio Hosting进程。它有一个自定义托管版本的CLR,使调试更容易。实际进程名称是yourapp.vshost.exe,您可以在任务管理器中看到它运行。
因此,消息的真正含义是您的程序已崩溃,但不是调试器可以识别的方式。如果您使用的库启动其自己的非托管线程并且该线程在未处理的异常上崩溃,那么这在技术上是可行的。默认情况下,调试器只能诊断在托管代码启动的线程上引发的异常。
您可以在此次崩溃后继续调试非常不寻常,并且可能非常不健康。如果您使用的库使用SetUnhandledExceptionFilter()安装其自己的未处理异常过滤器并吞下异常,则这在技术上是可行的。但是在主机进程看到之后是这样的。这非常了不起。
通过启用非托管调试器来获得更好的诊断信息。 Project + Properties,Debug选项卡,勾选"启用非托管代码调试"选项。然后是Debug + Exceptions,勾选Win32 Exceptions的Thrown复选框。重新发生崩溃情况,调试器现在应该在抛出异常时停止。查看调用堆栈的提示。您无法看到任何可识别的内容,因为可能没有针对崩溃的代码的任何调试信息。但希望包含代码的DLL的名称可以让你看到哪个库负责这个。然后联系库的供应商并询问详细信息。