代码之家  ›  专栏  ›  技术社区  ›  Mark

debugger.launch()在升级到.NET 4.0后正在崩溃我的Windows服务

  •  6
  • Mark  · 技术社区  · 16 年前

    对于调试环境,我们在代码中有一个条件调试器.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窗体中使用上面的代码片段,可以简单地复制问题。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Redwood    15 年前

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