在Visual Studio外部运行的调试应用程序

时间:2012-05-06 20:25:10

标签: c# debugging exception

我使用VS 2010 Ultimate开发C#应用程序。 通常,这些应用程序运行很长时间,没有用户交互,当然,它们通常都有内部错误。

不幸的是,应用程序经常随机崩溃,你无法重现错误。有时候我只有“应用程序已经停止工作”的消息,而没有更多的信息。

我可以在客户的机器上安装Visual Studio,但我不能让他运行VS并在调试模式下编译/启动源代码!我需要的是在应用程序启动和崩溃后启动VS 。似乎可以这样做,事实上当在运行时发生异常时,Windows会问你“你想用VS调试吗?”,但是如果我回答是,那么VS启动但我只是看不到来源代码(它也在PC上),因此我无法检查导致异常的代码行。 VS只告诉我“源代码不可用”。实际上,我无法想象Windows如何启动VS并知道崩溃应用程序的源代码在哪里!

有谁知道这个调试方案是如何工作的,以及如何配置它?

非常感谢, 西蒙

3 个答案:

答案 0 :(得分:1)

Windbg调试工具解决了这个问题。

转储进程状态并开始使用windbg进行分析。它为您提供了异常信息

答案 1 :(得分:1)

要从已经运行的Visual Studio实例进行调试,请选择“Debug”菜单项,然后选择“Attach to Process ...”

Attach to Process

接下来,从列表中选择可执行文件,按“Attach”(或双击),您现在正在调试应用程序。当您选择“是”并且Windows表示源代码不可用时,这很可能意味着无法加载PDB,因此请确保通过在“模块”中检查它来加载模块的符号。 “窗格。”

答案 2 :(得分:0)

如果要在运行已编译的程序时捕获错误,则应使用某种日志记录机制。这些天你不必自己编写,有一个很好的开源日志引擎专为.NET应用程序设计,它被称为NLog。它能够将日志保存到文件,电子邮件,控制台或数据库中,几乎所有你想要的东西:)。

希望这会有所帮助:)