对于调试环境,我们在代码中有一个条件调试器.launch语句,允许开发人员调试到Windows服务的启动代码中。我们今天刚升级到.NET 4.0。升级之后,如果我们退出JIT窗口(即我们选择不调试),Windows服务将崩溃(进程将终止)。它过去只是简单地恢复。如果我们接受附加,申请将不会终止,并且工作正常。
编辑
另一个奇怪的事情是抛出的异常不再是用户异常的启动。它现在是未处理的Microsoft.NET Framework异常。我试着用试水把它包起来看看能得到什么。我在调试时无法捕获异常,因为此时不会发生异常。如果我试图将异常记录到一个文件中,服务就会崩溃,我什么也得不到。
有办法解决这个问题吗?有什么理由吗?
更多信息
我刚刚创建了一个新的空白Windows窗体应用程序。
public Form1()
{
try
{
MessageBox.Show("hello");
System.Diagnostics.Debugger.Launch();
}
catch
{
MessageBox.Show("error");
}
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
InitializeComponent();
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ToString());
}
我得到第一个“你好”。然后我得到一个JIT窗口,上面写着“发生了未处理的Microsoft.NET异常”。如果我不附加,它会在没有消息或任何东西的情况下崩溃。
我试过温德伯格什么的。我对那些工具一点也不熟悉。这就是我要的。它看起来一点用处都没有
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\moueis\TestDebugging_100927_104956.dmp]
User Mini Dump File with Full Memory: Only application data is available
Comment: '
*** C:\Users\moueis\Desktop\procdump.exe TestDebugging.exe -e -ma
*** Unhandled exception'
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path. *
* Use .symfix to have the debugger choose a symbol path. *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Executable search path is:
Windows 7 Version 7600 MP (8 procs) Free x64
Product: Server, suite: TerminalServer SingleUserTS
Machine Name:
Debug session time: Mon Sep 27 10:49:56.000 2010 (UTC - 4:00)
System Uptime: 11 days 20:41:04.714
Process Uptime: 0 days 0:00:22.000
.........................................
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for KERNELBASE.dll -
KERNELBASE!DebugBreak+0x2:
000007fe`fd432442 cc int 3
这种情况发生在不止一台机器上(然而,它们是外部相似的)。
再次提供更多信息
这显然很容易复制。它发生在内部的多个系统上,我已收到外部方的确认,通过在使用.NET 4.0的.NET Windows窗体中使用上面的代码片段,可以简单地复制问题。