vb.net – VShost32.exe停止工作,但我可以继续调试

我的应用程序首先从数据库中读取数据,然后创建要上载到SFTP服务器的 XML文档.

当我运行应用程序时,我收到一个错误:

VShost32.exe停止工作

当我在调试模式下运行应用程序并逐步执行它时,我发现错误弹出的点,但我仍然可以继续执行下一步(只要我不关闭弹出窗口).然后,应该完成的一切都完成了.没问题.

那么为什么我会收到此错误消息?关于导致它的原因尚不完全清楚.

另外,我怎么能摆脱它呢?

解决方法

VSHost32.exe是Visual Studio Hosting进程.它有一个自定义托管版本的CLR,使调试更容易.实际进程名称是yourapp.vshost.exe,您可以在任务管理器中看到它运行.

所以消息的真正含义是你的程序崩溃了,但调试人员无法识别.如果您使用的库启动其自己的非托管线程并且该线程在未处理的异常上崩溃,那么这在技术上是可行的.默认情况下,调试器只能诊断在托管代码启动的线程上引发的异常.

你可以在这次崩溃后继续调试是非常不寻常的,可能非常不健康.如果您使用的库使用SetUnhandledExceptionFilter()安装其自己的未处理异常过滤器并吞下该异常,则这在技术上是可行的.但是在托管过程之后就这样做了.这是非常了不起的.

通过启用非托管调试器,可以更好地诊断此问题. “项目属性”,“调试”选项卡,勾选“启用非托管代码调试”选项.然后选择Debug Exceptions,勾选Win32 Exceptions的Thrown复选框.重新发生崩溃情况,调试器现在应该在抛出异常时停止.查看调用堆栈的提示.您将无法看到任何可识别的内容,因为可能没有任何针对崩溃的代码的调试信息.但希望包含代码的DLL的名称可以让你看到哪个库负责这个.然后联系库的供应商并询问详细信息.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...