看看实时执行的代码是什么

时间:2012-10-08 20:02:27

标签: c# .net visual-studio visual-studio-2012

我正在调试模式中运行 Visual Studio 2012中的应用程序,

我想看看实时执行哪些代码,这相当于执行

Console.WriteLine(" command.do ... etc. "); 
每一行后

是否可以实时查看执行的代码?

3 个答案:

答案 0 :(得分:2)

是和否。

是的,从技术上讲,实现这一目标是可行的。

不,你找不到工具来做到这一点(我不能100%肯定当然不存在的东西)。


这可以使用.NET框架提供的分析API来完成。一些分析器甚至宣传逐行跟踪,但这只意味着他们将测量每一行的时间,而不是使用一些快捷方式来降低性能。

然而,你应该尝试解释你最终想要完成的事情,而不是试图强迫自己走最短路径。

答案 1 :(得分:0)

我建议你看一下像JetBrains这样的工具。它有一个10天的免费试用版,它很好地集成到Visual Studio中。

http://www.jetbrains.com/profiler/

这并不完全符合您的要求。但我想不出更好的事情。

答案 2 :(得分:0)

当实时调试时,不应该延迟程序。这可以使用外部硬件来完成,比如逻辑分析仪,它并不便宜。

不是跟踪每一行的执行,而是追踪一些重要行的执行情况。该痕迹必须非常快。 Visual Studio的跟踪速度太慢,阻塞了第二个调用Trace的线程,这是一个很大的No No实时调试。

幸运的是,很容易编写自己的内存跟踪,这只会导致微秒延迟并且无阻塞:

const int maxMessages = 0x100;
const int indexMask = maxMessages-1;
string[] messages = new string[maxMessages];
int messagesIndex = -1;

public void Trace(string message) {
  int thisIndex = Interlocked.Increment(ref messagesIndex) & indexMask;
  messages[thisIndex] = message;
}

这种方法的更详细描述也收集了线程和时序信息并很好地输出了跟踪: CodeProject:实时调试多线程代码1