我正在调试一个具有两个正在运行的实例的Windows服务,通过附加到两个实例。我这样做是因为我知道只有一个实例会触及我的断点,但是我想知道它是哪个实例,这样我以后就不必再附加这两个实例了。
当连接到多个进程时,是否有一种方法可以告诉哪个进程遇到了断点?一个试错法的解决方案是一次附加一个并查看断点是否被命中,或者,停止其中一个服务(通过services.msc)并查看哪个进程ID消失 - 但这两个解决方案似乎都无法扩展对我来说。有更优雅的方式吗?
谢谢!
答案 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)。