Ale*_*lec 5 debugging visual-studio-2010 visual-studio-debugging attach-to-process
我正在调试一个Windows服务,它有两个正在运行的实例,通过附加到两个实例.我这样做是因为我知道只有一个实例会触及我的断点,但是我想知道它是哪个实例,以便将来不必附加两个实例.
有没有办法,当附加到多个进程时,你可以告诉哪一个已经命中了断点?一个试错法的解决方案是一次附加一个并查看断点是否被命中,或者,停止其中一个服务(通过services.msc)并查看哪个进程ID消失 - 但这两个解决方案似乎都无法扩展对我来说.有更优雅的方式吗?
谢谢!
Ome*_*viv 10
这就是“进程”窗口的用途(“调试”->“Windows”->“进程”,或 Ctrl+Alt+Z)。
您可以将监视添加到以下语句中:
System.Diagnostics.Process.GetCurrentProcess().Id
Run Code Online (Sandbox Code Playgroud)
这为您提供了附加的PID(进程ID).您可以在Windows任务管理器中查找pids(菜单视图 - >选择列并勾选PID).
希望这可以帮助
您可以尝试在断点上使用“当命中...时”选项(在断点上单击鼠标右键,它在弹出的上下文菜单中)。然后,您可以打印带有变量值的消息以及许多其他信息,例如:
$ ADDRESS-当前指令
$ CALLER-上一个函数名称
$ CALLSTACK-调用堆栈
$ FUNCTION-当前函数名称
$ PID-进程ID
$ PNAME-进程名称
$ TID-线程ID
$ TNAME-线程名称
http://msdn.microsoft.com/zh-CN/library/232dxah7(v=vs.110).aspx