【问题标题】:Debugger.Launch() is now crashing my windows service after upgrading to .NET 4.0升级到 .NET 4.0 后,Debugger.Launch() 现在使我的 Windows 服务崩溃
【发布时间】:2010-09-24 19:30:44
【问题描述】:

对于调试环境,我们在代码中有条件的Debugger.Launch语句,让开发者可以调试到windows服务的启动代码中。我们今天刚刚升级到 .NET 4.0。自升级以来,如果我们退出 JIT 窗口(即我们选择不调试),Windows 服务将崩溃(进程正在终止)。它过去只是简单地恢复。如果我们接受附加,应用程序不会终止并且可以正常工作。

编辑

另一个奇怪的事情是,抛出的异常不再是 Launch for User 异常。它现在是未处理的 Microsoft .NET 框架异常。我试图在它周围包裹一个try catch,看看我得到了什么。调试时我无法捕获异常,因为此时异常不会发生。如果我尝试将异常记录到文件中,服务会崩溃,我什么也得不到。

有什么办法可以解决这个问题吗?有什么原因吗?

更多信息

我刚刚创建了一个空白的新窗体应用程序。


        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 异常”。如果我不附加,它会在没有消息或任何内容的情况下崩溃。

我尝试过 WinDbg,但没有。我对这些工具一点也不熟悉。这就是我得到的。它看起来一点用处都没有

Microsoft (R) Windows 调试器版本 6.12.0002.633 AMD64 版权所有 (c) 微软公司。版权所有。 加载转储文件 [C:\Users\moueis\TestDebugging_100927_104956.dmp] 具有完整内存的用户迷你转储文件:只有应用程序数据可用 评论: ' *** C:\Users\moueis\Desktop\procdump.exe TestDebugging.exe -e -ma *** 未处理的异常' 符号搜索路径为:***无效*** ****************************************************** ****************************** * 如果没有符号搜索路径,符号加载可能不可靠。 * * 使用 .symfix 让调试器选择符号路径。 * * 设置符号路径后,使用 .reload 刷新符号位置。 * ****************************************************** ****************************** 可执行搜索路径为: Windows 7 版本 7600 MP(8 个过程)免费 x64 产品:服务器,套件:TerminalServer SingleUserTS 机器名称: 调试会话时间:2010 年 9 月 27 日星期一 10:49:56.000 (UTC - 4:00) 系统正常运行时间:11 天 20:41:04.714 处理正常运行时间:0 天 0:00:22.000 ......................................................... *** 错误:找不到符号文件。默认为 ntdll.dll 导出符号 - *** 错误:找不到符号文件。默认为 KERNELBASE.dll 导出符号 - 内核基础!DebugBreak+0x2: 000007fe`fd432442 cc int 3

这发生在不止一台机器上(但是,它们非常相似)。

再次了解更多信息

这显然很容易重现。它发生在内部的多个系统上,我已收到来自外部方的确认,只需在使用 .NET 4.0 的 .NET windows 窗体中使用上面的代码 sn-p 即可重现该问题

【问题讨论】:

  • 发布异常的堆栈跟踪以及异常消息。
  • 事件日志告诉你什么?
  • 您可以在服务崩溃时使用 Sysinternal 的 ProcDump 实用程序(使用 -e 选项)对服务进行内存转储。获得转储后,您可以将其加载到 WinDbg 并使用 SOS 调试器扩展调查它崩溃的原因。
  • 你能把你的转储发布到某个地方吗?
  • 我没有一个方便的地方来发布转储(我不相信你可以把它贴在这里吗?)。但是,问题很容易重现。

标签: c# .net debugging visual-studio-2010 .net-4.0


【解决方案1】:

我遇到了同样的问题,通过谷歌搜索找到了Microsoft Connect report for it

【讨论】:

  • 是的,我发布了 :) 还没有修复
  • 我想你可能有。我想即使您有其他人发现此问题也可能会喜欢该链接。
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2019-05-12
相关资源
最近更新 更多