与“开始调试”相比,“附加到流程”的优势是什么?

时间:2010-05-18 09:44:56

标签: visual-studio debugging

我是编程新手。 我知道之前只有启动调试。也许开始调试适合一些小应用程序开发得更好。

我发现Visual Studio IDE提供了另一种附加到进程使用的方法。 当&为什么我必须使用附加调试?

如多线程应用程序调试。客户端/服务应用调试。等等。谢谢。

4 个答案:

答案 0 :(得分:3)

有时您需要调试由另一个程序启动的进程。

例如,您需要一个可靠的解决方案,并且为了防止访问冲突,内存泄漏和其他几乎无法恢复的内容,您有一个主程序和几个工作程序。主程序启动工作程序并将参数传递给它。如何调试一个除了主程序之外不能启动的工作程序?

您使用“附加到处理”。

通常你这样做:插入一个阻止工作程序一段时间的语句 - 例如,调用Sleep() 15秒。然后你请主程序启动工作程序。当工作程序启动时,它会阻塞,你现在有15秒的时间来连接它。

通过这种方式,您几乎可以调试任何问题 - 早期启动阶段的问题,错误的参数等,您无法通过“运行调试”来可靠地重现这些问题。

答案 1 :(得分:2)

从VS启动调试启动VS webserver的实例并将调试器附加到它。

附加到进程允许您附加到任何进程并对其进行调试,通常您可以对运行IIS中的代码的w3wp.exe实例执行此操作

答案 2 :(得分:2)

如果您不想从启动进程开始直接调试,那么附加到进程非常有用。例如,调试通常会降低执行速度,因此可以更快地启动应用程序,将其置于出现错误的状态,然后附加调试器。

如果您已经有一个外部方法来启动您不想要或不能导入IDE的进程,那么它也很有用。

答案 3 :(得分:2)

当您无法从Visual Studio运行应用程序时,主要使用附加到进程。

例如,如果它是一个服务,或者它是一个已运行很长时间的进程,现在你想开始调试它。

有时您也想要调试远程进程,而不是在您的计算机上进行调试 - 您可以使用attach to process来执行此操作。