如何在运行时列出函数的所有调用?

How to list all calls of a function at runtime?

有没有办法列出(在VS中显示,写入文件)所有调用者 (objects, functions) 一个函数而程序是运行?可能使用调试器?

我需要记录 所有调用(包括调用者)一个函数程序启动到终止。

对源代码或二进制文件的简单扫描 无法完成工作,因为该程序可以作为服务器运行,接收请求调用所需的函数。

如果Visual Studio没有提供这个功能,有没有其他的解决办法?

IMO,您最好的解决方案是添加日志记录功能。

查找对您的函数的所有调用。在调用函数之前将某种信息打印到日志文件中。这将为您提供带注释的函数调用历史记录。

另一个想法是使用文档工具,例如 Doxygen,它可以打印 "caller" 和 "callee" 图表。但是,这不是在您的程序执行期间。

如果您的程序是 .NET 应用程序,您可以使用我的 Runtime Flow 工具在程序 运行.

时查看某个函数的所有调用者

VS 分析器工具也会对您有所帮助,您可以 select 方法 "CPU sampling".

完成后,您可以select "Caller/Callee"。

参考:

https://docs.microsoft.com/en-us/visualstudio/profiling/caller-callee-view

更新: 我们可以导出报告: