如何在运行时列出函数的所有调用?
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
更新:
我们可以导出报告:
有没有办法列出(在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
更新:
我们可以导出报告: