C# 查看实时执行的代码

C# 查看实时执行的代码,c#,.net,visual-studio,visual-studio-2012,C#,.net,Visual Studio,Visual Studio 2012,我正在调试模式下运行来自Visual Studio2012的应用程序 我想看看实时执行什么代码,这相当于 Console.WriteLine(" command.do ... etc. "); 每行之后 是否可以实时查看执行的代码?是和否 是的,从技术上来说,这是可行的 不,你找不到工具来做这件事(当然,我不能百分之百确定什么是不存在的) 这可以使用.NET framework提供的分析API来完成。有些探查器甚至会逐行跟踪,但这只意味着它们会测量每一行的时间,而不是使用一些快捷方式来降低

我正在调试模式下运行来自Visual Studio2012的应用程序

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

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

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

是和否

是的,从技术上来说,这是可行的

不,你找不到工具来做这件事(当然,我不能百分之百确定什么是不存在的)


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


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

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


这不完全符合你的要求。但是我想不出比这更好的了。

在实时调试时,不应该延迟程序。这可以通过使用外部硬件来实现,比如逻辑分析仪,价格不菲

与其跟踪每一行的执行情况,不如只跟踪一些重要行的执行情况。那痕迹一定非常快。VisualStudio的跟踪速度太慢,会阻塞调用跟踪的第二个线程,这在实时调试中是一个很大的禁忌

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

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:实时调试多线程代码

如果我是你,我会对我的电脑进行全面检查,直到它这样做。在第一行添加一个断点,然后按F5。。。魔术或按F11。将在第一行自动中断。Chuck Norris可以在线性时间内对列表进行排序。他使用了一种称为KickSort的快速排序变体。他还可以通过将大整数分开来计算它们的因子。你不能使用普通的断点吗?