如何将Visual Studio附加到尚未启动的进程?

我有.NET程序,无法运行从Visual Studio出于某种原因(从Excel 2010模板项目创build的Excel文件),我需要debugging启动事件。

如果我想debugging程序初始化之后发生的事件,则不会有任何问题。 我从资源pipe理器中运行该程序,将该进程附加到Visual Studio并在代码中添加一些断点。 但是在这里,我需要在启动事件中join断点。 我需要的是能够附加进程Visual Studio不依赖于一个PID,但在一个特定的进程名称或任何其他解决scheme将工作。

当然,在我的启动事件中添加一个Thread.Sleep(1000) ,给我一些时间来在Visual Studio中附加进程是没有问题的!

谢谢。

其实你可以! 但是你不重视它,你开始吧。 在项目的属性上,在debugging选项卡上,您可以指定一个外部程序。 只需input你正在开始的程序的path(例如:Excel)

我正在debugging一个外部产生的进程中的C ++插件,这个进程在启动时抛出一个exception而崩溃,这对我来说非常合适:

为Visual Studio添加免费的Reattach扩展 。 请在启动之前重新附加进程名称。 它会popup一个模式对话框,说它正在等待进程名称启动。

现在启动该进程,Visual Studiodebugging器将立即连接,捕获exception并触发断点。

当我在寻找类似的东西时,我发现了这个答案。 在我的情况下,我不能简单地使用可执行文件作为我的项目的启动程序,因为它需要在一个非常特定的环境中启动,我不能轻松地重现(namly:从cygwin开始)。

我看了一下mrstrangebuild议的Reattach Extension以及非常类似的Attach To Anything扩展名……但是我的可执行文件似乎太快了,以至于扩展不能通知和附加。

最终帮助我的是: https : //stackoverflow.com/a/4042545/1560865

希望这有助于未来的其他人!

如果没有进程,则Visual Studio无法附加到它。

但是,您可以将项目的启动程序设置为项目输出以外的内容。

如果您有Visual Studio 2017,请按照下列步骤操作:

  1. 文件>打开>项目/解决scheme
  2. select你的.exe
  3. debugging>开始debugging

比其他build议要容易得多:您不必混淆项目属性,也不需要扩展。