生成 c/c++ 的动态调用图运行中的程序
如果要可视化程序的运行,我想应该从获取程序的调用图开始。
但是如何在运行时获取 C/C++ 程序的调用图呢?
编辑:澄清一下,我目前正在 Linux 上运行,使用 g++,但我想如果我使用不同的平台,我也对解决方案感到好奇。
If one were to visualize the running of a program, I suppose one would start by getting the call graphs of the program.
But how would you get the call graph of c/c++ programs while on the run?
edit: clarifications, I'm currently running things on linux, using g++, but I suppose I am also curious about solutions if I'm using a different platform.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 KCachegrind 生成和分析调用图基于 Valgrind callgrind 工具生成的数据。
You can use KCachegrind to generate and analyze call graphs based on data generated by Valgrind's callgrind tool.
SofwareVerify 的 Bug Validator(提供免费公开测试版) )这样做。
摘自主页:
(我的标记)。
我不知道他们是如何做到的,但显然,这是可能的。
The Bug Validator from SofwareVerify (free public beta available) does this.
Excerpt from homepage:
(Markup from me).
I don't know how they do it, but obviously, it's possible.
我使用 etrace 来跟踪程序的执行。
埃及 也做了同样的事情,但只对 C++ 提供有限的支持。
两者都要求程序使用 gcc 进行检测。
I've used etrace to trace executions of programs.
Egypt does the same thing, but only has a limited support for C++.
Both requires the program to be instrumented with gcc.