【发布时间】:2011-11-22 02:03:23
【问题描述】:
是否可以制作一个“实时”调用堆栈窗口?要在应用程序运行时查看调用堆栈并自动更新?
如果能在运行我的 Web 应用程序时查看幕后发生的事情,那就太好了。
【问题讨论】:
标签: c# visual-studio-2010 debugging callstack
是否可以制作一个“实时”调用堆栈窗口?要在应用程序运行时查看调用堆栈并自动更新?
如果能在运行我的 Web 应用程序时查看幕后发生的事情,那就太好了。
【问题讨论】:
标签: c# visual-studio-2010 debugging callstack
每个方法调用?每秒可能有数百或数千或数十万次调用堆栈更改。您无法在 Visual Studio 2010 中执行此操作。您可以暂停 Thread 对象并从中获取堆栈跟踪并输出,但性能会很糟糕(无法使用)。
听起来您可能需要一个探查器。
【讨论】:
这在技术上是可行的,但本质上是一个无法使用的功能。在正常运行的应用程序中,调用堆栈会发生变化……每秒很容易发生数千次。 UI 根本无法以有意义的方式跟上这种吞吐量。如果它只是简单地在屏幕上绘制每个版本,那么它对你来说只会显得模糊,而且毫无用处。
【讨论】:
我对此表示怀疑……即使它可用,那么它的更新速度也会如此之快,以至于你什么都看不到。只需将Trace 语句放在您感兴趣的函数中即可。
Trace.WriteLine("Foo::Bar()");
您可以在调试时在“输出”窗口中查看Trace 结果。如果您需要更高级的跟踪,请使用 dotTrace profiler 或任何其他 .NET 分析器。
【讨论】:
Runtime Flow(由我开发)显示了实时更新的正在运行的 .NET 应用程序的调用堆栈。您可以在调用堆栈树中看到到目前为止的所有函数调用。
【讨论】:
我有两个建议:
Visual Studio 16.9 中有一个新功能,称为“用于 .NET 的新动态检测分析”
这里有一些细节:https://devblogs.microsoft.com/visualstudio/new-dynamic-instrumentation-profiling/
有一个名为“codetack”的免费 Profiler 可以帮助 分析代码执行。如果我没记错的话,它可以显示 实时分析。 https://www.getcodetrack.com/
【讨论】: