如何跟踪C#中另一个进程执行的当前代码行

时间:2011-03-23 12:14:30

标签: c#

我想知道是否有可能获得c#中当前由另一个进程(在同一程序中)执行的代码行数。假设我们有一个类“TestClass”,它启动两个进程:进程A和B.进程A执行一堆代码,而进程B不时查看进程A的代码行。或者它可能是相反的方式:进程A在每个完成的代码行告诉进程B它刚刚执行该行。

最后,我希望能够将时间戳+当前正在执行的代码行记录到文本文件中。

显然我可以拥有一百万台Console.WriteLine(“Line x”);在我的代码中,但我希望我的应用程序在代码更改方面更加灵活。

我很感激任何能够做这种事情的库/ API的提示。代码片段也受到高度赞赏。 :)

祝福, 基督教

2 个答案:

答案 0 :(得分:3)

您可能希望更全面地描述您的目标,因为您的意图会推动这个答案。

如果您的目标是进行性能分析(我的猜测),找出系统的哪些部分很慢,请查看JetBrains DotTrace等工具。如果您按照描述的方式使用任何自制方法,您将修改/破坏您尝试分析的性能。

如果你的目标是一个状态监视器(比如你的程序是在一个状态还是另一个状态),你将需要构建某种系统,以便它以一种非常可控的方式记录它的当前状态,而不仅仅是倾倒当你到达它的每一行#(所以我怀疑这是你的目标)。

如果您的目标是调试,VS调试器是您的首选工具。

如果您想跟踪系统流程,那么您应该查看日志记录(如评论者的log4net)。

答案 1 :(得分:0)

这样做背后的动机是什么?如果您只想了解调用图以及执行特定行所需的时间,那么在运行时分析器上运行代码是否足够?