2010-12-05 80 views
0

我有一个.NET 4.0控制台应用程序运行在生产服务器上。该应用程序在特定的基础上运行,编译为调试版本,所有调试符号通过exe发送到服务器。无法调试到工作:.NET 4.0,Windows 2003服务器

当应用程序中出现异常时,我希望它会不太正常地死掉,并像任何旧的控制台应用程序一样将堆栈打印到控制台。相反,我看到的行为是这样的:

  1. 出现JIT调试器窗口,要求调试。
  2. 如果我说“是”,它会激活一些非常有限的VS 2005版本。我被转换为汇编语言,看不到源代码或文件名。堆栈跟踪的所有级别都是这种情况。
  3. 如果我说“不”,根本没有信息写入控制台。

我试过在PowerShell外壳和传统cmd控制台中运行这个效果相同。

服务器运行ASP.NET 4.0,并且没有任何问题将这些错误返回给浏览器。

我想要的只是看到真正的错误和堆栈打印到控制台没有JIT弹出。除了全球性的捕捉和写作,我有什么选择?

+0

你的帐户下运行与管理员权限? – Oded 2010-12-05 19:47:07

+0

请参阅我的回答http://stackoverflow.com/questions/4346970/how-to-capture-a-running-net-process-to-disk/4350019#4350019如何生成故障转储,它可以是在调试器中检查。 – 2010-12-05 19:53:37

回答

1
using System; 

class Program { 
    static void Main(string[] args) { 
     AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 
     throw new Exception("test"); 
    } 

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { 
     Console.WriteLine(e.ExceptionObject.ToString()); 
     Console.ReadLine(); 
     Environment.Exit(1); 
    } 
} 
相关问题