查看实时执行的代码



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

我想看看实时执行什么代码,这相当于做

Console.WriteLine(" command.do ... etc. "); 

每一行之后

是否可以实时查看执行了哪些代码?

是和否。

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

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


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

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

我建议你看看像JetBrains这样的工具。它有10天的免费试用期,并且可以很好地集成到Visual Studio中。

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

这并不能完全满足您的要求。但我想不出更好的办法。

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

与其跟踪每行的执行

,不如只跟踪一些重要行的执行。该跟踪必须非常快。Visual Studio的跟踪速度太慢,会阻止调用Trace的第二个线程,这是一个很大的实时调试。

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

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;
}
此方法

的更详细描述还收集线程和计时信息并很好地输出跟踪:代码项目:实时调试多线程代码 1

最新更新