我在运行一个(大多数情况下)单线程程序(有一个主线程负责所有操作,其他线程只读取数据)。我可以在VS2008中进行一些小改动后(我更改了一个表单的文本和另一个表单的标签顺序),使应用程序正常运行,但是我无法在调试器之外让它正常工作。有人知道是什么原因吗?
澄清: 在使用调试器(F5)启动的发布模式下可以正常工作。在使用调试器(F5)启动的调试模式下也可以正常工作。在使用Ctrl+F5或在VS之外启动的Debug或Release可执行文件将导致失败。
它使用Microsoft的Virtual Earth 3D,在“希望之环”(加载环)即将完成时似乎会崩溃。
事件日志显示:“.NET Runtime版本2.0.50727.3053 - 致命执行引擎错误(000006427F44AA6E)(80131506)”
罪魁祸首: 这行代码:
this.loader = PlugInLoader.CreateLoader(this.globeControl.Host);
导致它失败。然而,之前正常工作的表单使用了完全相同的代码行且没有问题。该行对程序的功能是必要的。我不知道它在做什么。
另一个线索错误似乎出现在 .NET 框架内部。该应用程序在另一台机器上工作,尝试重新安装。更新:没有任何差别,但当我修复 VS 时,它一直告诉我 Visual Studio 崩溃了,即使我没有运行它。
错误 启动程序后几分钟,我会收到以下错误信息: Application has generated an exception that could not be handled.
Proccess ID=0x9CC (2508), Thread ID =0xF0C(3852).
点击“确定”终止应用程序。
点击“取消”调试应用程序。
反汇编看起来很奇怪:
0000000077EF2A90 int 3
0000000077EF2A91 int 3
0000000077EF2A92 int 3
0000000077EF2A93 int 3
0000000077EF2A94 int 3
0000000077EF2A95 int 3
0000000077EF2A96 xchg ax,ax
0000000077EF2A9A xchg ax,ax
0000000077EF2A9E xchg ax,ax
0000000077EF2AA0 int 3 <-- Crashes here
0000000077EF2AA1 ret
它多次重复了相同的代码块(除了对自身进行交换)
除了我的电脑外,我测试过的所有机器上都运行正常,但是在我的虚拟机上却无法安装.NET框架,因为设置程序下载0字节中的0字节框架……可爱的Windows。