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

C# 如何跟踪C中另一个进程执行的当前代码行#,c#,C#,我想知道是否有可能获得c#中另一个进程(在同一程序中)当前执行的代码行数。假设我们有一个类“TestClass”,它启动两个进程:进程a和进程B。进程a执行一组代码,而进程B不时查看进程a是哪一行代码。或者也可以是另一种方式:进程A在每一行完成的代码中告诉进程B它刚刚执行了那一行 最后,我希望能够将时间戳+当前正在执行的代码行记录到文本文件中 显然,我可以拥有一百万台主机。WriteLine(“第x行”);'在我的代码中有,但我希望我的应用程序在代码更改方面更加灵活 我将非常感谢对能够做这样一件

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

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

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

我将非常感谢对能够做这样一件事的库/API的任何提示。代码片段也非常受欢迎。:)

致以最良好的祝愿,
Christian

你可能想更全面地描述你的目标,因为你的意图决定了这个答案

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

如果你的目标是一个状态监视器(比如你的程序是处于一种状态还是另一种状态),你会想要构建某种系统,这样它就可以以一种非常可控的方式记录当前状态,而不是在你到达它的时候,仅仅转储每一行(所以我怀疑这是你的目标)

如果您的目标是调试,那么VS调试器是您选择的工具


如果您想跟踪您的系统流,那么日志记录(如评论员的log4net)就是您应该关注的内容。

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

你看过log4net吗?这看起来很有趣,我会看看它是否能满足我的需要。谢谢大家!@Gabe/Christian:log4net解决方案相当于“一百万个控制台。WriteLine”的解决方案(尽管有点灵活),不是吗?@Scott:log4net可以自动记录行号(
Console.WriteLine
can not),他可以配置它,以便进程A的日志记录直接进入进程B(比如,通过套接字)我的目的是“跟踪系统流”:最终我希望记录正在执行的每一行代码。同时,我已经录制了一段视频:然后我将用代码行映射视频,这样在整个程序(过程)完成后,人们可以观看视频并看到映射到当前视频帧的每一行代码。那么Log4Net是正确的选择吗?@Christian:比如,为了编写编程教程?简而言之,Log4NET将有效地执行与Console.WriteLine相同的操作,但它还具有一些其他功能(如您需要的时间戳),因此,是和否。我认为你最好的办法是发布另一个SO问题,简单地概述你正在描述的更大的目标,看看你得到了什么样的想法/解决方案。这不是为了编程教程。最终,该视频将用于分析自动化UI测试,因为它们在某些情况下无法调试。所以我想用它来运行一个自动化的ui测试,然后看看(在发生异常的情况下)这个异常发生的原因和地点,以及到底发生了什么。无论如何,谢谢你的回答,也许Log4Net是正确的选择。