【发布时间】:2014-09-16 15:19:40
【问题描述】:
我有一个正在尝试调试的 MMC 管理单元。目前,位于管理单元的构造函数中的以下代码用于将调试器附加到它:
public MySnapIn()
{
#if DEBUG
if (!Debugger.IsAttached)
{
Debugger.Launch();
}
#endif
...
}
但总是必须将调试器附加到 Visual Studio 真的很烦人。我想自动化这个过程。理想情况下,我只需按 F5,它就会自动附加调试器。我尝试了以下方法:
- 项目属性->启动外部程序->输入“C:\Windows\System32\mmc.exe”
- 项目属性 -> 命令行参数 -> 给它一个 .msc 文件的路径(存储管理单元布局,以便每次都更容易加载它,这样你就不必总是文件 ->添加/删除管理单元)。
这不起作用。调试器不会自动附加。我怎样才能使这个过程自动化,或者是什么阻止了调试器自动附加?
【问题讨论】:
-
+1 只是为了教我如何请求附加调试器 (
Debugger.Launch())。我不知道这是可能的。 -
@stakx 大部分时间都有效。例如,如果你有一个 Windows 服务,或者其他类型的应用程序不应该有一个 GUI(根据软微),它不起作用:stackoverflow.com/questions/12042054/…你可能也有兴趣了解 WER 作为调试工具(为您生成故障转储;使用故障转储,您可以将它们加载到 Visual Studio 并在故障点重新连接调试器并查看所有应用程序对象的状态)。
-
@stakx WER 只需要更改注册表项 (msdn.microsoft.com/en-us/library/windows/desktop/…) 并存在 PDB 文件。您还可以从任务管理器生成转储(CTRL+SHIFT+ESC -> 右键单击应用程序 -> 生成转储文件)
-
WER 听起来很有趣。由于目标计算机上缺乏管理员权限,我将无法在我想(在工作中)使用它,但无论如何我会调查它。
-
@stakx 此外,有时,如果您使用 C++(本机)和 C#(托管)应用程序,当您附加调试器(调试 -> 附加到进程)时,您可能需要更改它附着的方式。 “附加到:”有一个选择...按钮,我必须启用所有这 3 个:本机、托管和托管兼容模式,以便调试一些在运行时按顺序加载/调用托管 DLL 的本机应用程序能够调试它。 Windows 中的调试支持非常出色,但文档总是那么糟糕......
标签: c# .net visual-studio debugging mmc