调试编译的.NET 2.0应用程序

时间:2010-05-07 11:18:34

标签: .net debugging jit

我不知道我是否会在这里传递所有必要的信息,但我只是被要求在这里发布这个问题而且我并不完全是这个问题。

在调试模式下编译了一个.NET Framework 2.0应用程序,并在app.config中将参数jitDebugging设置为true

<system.windows.forms jitDebugging="true" />

任何崩溃后,我们都会出现一个对话框,允许我们发送报告或调试程序。当我们选择调试并选择适当的VS时,IDE会启动,但会显示:

  

没有为任何调用堆栈帧加载符号。无法显示源代码。

  

无法在运行模式下显示反汇编。

是否有可能看到崩溃发生的代码或地点?

//编辑:

Tarscher的建议很好,但最终的解决方案是......使用Main()方法添加模块并强制项目使用它 - 不知何故,由于VS能够显示代码并找到异常的来源。

3 个答案:

答案 0 :(得分:2)

确保您的应用程序中包含.pdb文件和.dll文件。

答案 1 :(得分:1)

您的.net应用程序将在崩溃后创建转储文件。您需要将此转储文件与应用程序pdb文件一起加载以查看源代码。编译和存储有关程序的调试信息时会创建此pdb文件。

在您的情况下,Visual Studio可能无法找到pdb文件并加载它们。

答案 2 :(得分:1)

不确定您的部署方案是什么样的,但在客户或生产计算机上运行调试器通常不太实用。编写AppDomain.UnhandledException事件的事件处理程序,并显示e.ExceptionObject.ToString()的值。您的客户至少可以向您发送屏幕截图。您将获得异常消息和一个很好的堆栈跟踪,显示您的程序如何遇到麻烦。通常95%足以看出出了什么问题。