在应用程序运行时随时启动Visual Studio Debugger

时间:2015-03-11 13:00:30

标签: c# visual-studio-2010 debugging

我正在使用Visual Studio开发应用程序,当我在客户端计算机上安装它(通过Setup Project,.msi文件)并运行它时,我得到一些“Heisenbug”异常。 我几乎可以肯定错误来自早期的代码路径,所以我想调试它。

事实是:当应用程序崩溃时,会显示以下对话框(当然是指我的应用程序而不是Windows资源管理器):

enter image description here

如果我选择“调试程序”,Visual Studio调试器(在部署的计算机中以某种方式可用)将启动并显示异常的详细信息。

我想要做的是从一开始就启动调试会话 ,这样我就可以继续点击F10和F11并检查一些中间值。

任何人都知道如何在应用程序运行时随时启动Visual Studio调试会话?并非我运行已部署的应用程序,而不是从Visual Studio启动它。

2 个答案:

答案 0 :(得分:3)

由于您在运行已部署应用程序的计算机上启动并运行Visual Studio,因此它应该很简单:

  1. 运行应用程序
  2. 在Visual Studio中加载项目
  3. 转到 DEBUG - > 附加到流程...
  4. 将弹出一个包含所有正在运行的进程的列表

    从列表中选择与应用程序对应的进程,它应该以exe命名(如果按数字ID排序,它很可能会接近最高端)

  5. 单击"附加",Visual Studio将开始调试,就像您通常以 F5 开始一样。


  6. 我还有另一个建议:实施日志记录,直到找到所有内容。写下您怀疑的所有内容,以便在出现问题时进行进一步分析:值,查询等。

答案 1 :(得分:1)

您可以启动application directly under the Visual Studio Debugger using the debugexe parameter

  

devenv / debugexe“C:\ MyApplication \ Debug \ MyApplication.exe”

这将立即启动调试器启动应用程序。否则,很难调试应用程序启动时发生的问题。您无法及时手动附加以捕获在此期间发生的任何事件。

您还可以将以下代码放在应用程序的第一行(通常是Main(string [] args))到force a debugger to attach and cause the application to break immediately

System.Diagnostics.Debugger.Break();

如果您的应用程序启动并且运行正常一段时间,您可以使用"附加到程序" @Alex描述的功能。

如果您没有目标计算机上的可用资源,您可以复制它们,或者如果您正在使用TFS Team Build的源和符号索引功能,您可以告诉调试器在哪里查找您的调试符号(然后将自动解析为TFS源代码控制)。