如何反向跟踪函数调用
本文关键字:函数调用 跟踪 何反 | 更新日期: 2023-09-27 18:12:19
我想跟踪从一个特定函数开始到结束的函数调用流。
我知道在代码的任何地方都可以得到堆栈跟踪,然而,我不知道函数将采取哪条路径。我试图修复一个错误,我不知道在哪里感兴趣的点是确切的。这就是为什么我想看到函数调用的流程(不使用调试器,这是耗时的),这样我就可以缩小可能性。
是否可以反向跟踪开始函数调用?
这叫做调用跟踪你可以在visual studio和第三方工具中看到这个,
https://msdn.microsoft.com/en-us/library/windows/hardware/hh439516 (v = vs.85) . aspx
您可以使用jetbrains工具作为第三方:
https://www.jetbrains.com/profiler/help/Call_Stack.html https://www.jetbrains.com/resharper/documentation/help20/Navigation/stackTraceExplorer.html希望这些对你有帮助
也许您可以使用System.Diagnostics.StackTrace
类。MSDN
var stackObject = new System.Diagnostics.StackTrace(true);
string stackTrace = stackObject.ToString();
有两种方法,使用跟踪点-
- 每次跟踪一个函数;
- 跟踪所有函数
跟踪一个函数
将跟踪点放在感兴趣的函数中。每当跟踪点被击中时,让它打印调用函数。我认为这可以通过打印属性- $FUNCTION
来完成。
这样,当你在Visual Studio的Output窗口中运行代码时,你将知道当前函数的调用者。现在在调用者函数中执行相同的活动,并根据需要继续使函数冒泡。
跟踪所有函数
如果您的所有函数都在一个类中或对您来说足够局部,只需在所有函数中放置相同的跟踪点。让您的代码运行,您将能够在Visual Studio的Output窗口中看到调用跟踪。
添加跟踪点
- 右键单击要添加跟踪点的行;
- 下拉菜单>断点>插入跟踪点;
- 打开的窗口将解释如何在该跟踪点打印调用函数。