如何判断我正在调试哪个进程(附加到多个进程)?

时间:2013-01-21 16:17:45

标签: visual-studio-2010 debugging visual-studio-debugging attach-to-process

我正在调试一个具有两个正在运行的实例的Windows服务,通过附加到两个实例。我这样做是因为我知道只有一个实例会触及我的断点,但是我想知道它是哪个实例,这样我以后就不必再附加这两个实例了。

当连接到多个进程时,是否有一种方法可以告诉哪个进程遇到了断点?一个试错法的解决方案是一次附加一个并查看断点是否被命中,或者,停止其中一个服务(通过services.msc)并查看哪个进程ID消失 - 但这两个解决方案似乎都无法扩展对我来说。有更优雅的方式吗?

谢谢!

3 个答案:

答案 0 :(得分:6)

您可以将监视添加到以下语句中:

System.Diagnostics.Process.GetCurrentProcess().Id

这为您提供了附加的PID(进程ID)。 您可以在Windows任务管理器中查找pid(菜单视图 - >选择列并勾选PID)。

希望这有帮助

答案 1 :(得分:4)

您可以尝试在断点上使用“When Hit ...”选项(右键单击断点,它位于弹出的上下文菜单中)。然后,您可以使用变量的值以及许多其他信息打印消息,例如:

$ ADDRESS - 当前说明

$ CALLER - 上一个功能名称

$ CALLSTACK - 调用堆栈

$ FUNCTION - 当前功能名称

$ PID - 流程ID

$ PNAME - 流程名称

$ TID - 主题ID

$ TNAME - 主题名称

http://msdn.microsoft.com/en-us/library/232dxah7(v=vs.110).aspx

答案 2 :(得分:4)

这就是进程窗口的用途(Debug-> Windows-> Processes,或Ctrl + Alt + Z)。