- 主题:怎么可视化program trace (call graph)
就是把一个程序跑的所有函数名都按顺序打印出来,caller callee之间的关系也要分清。
最近接手了一个老项目,极其混乱,以往都是用gdb一步步走下去,但这个工程滥用template,经常走了几十步还是在几个文件里打转转。
我尝试用-finstrument-functions在每个function进出的地方打印trace,然后再用graphviz转化成png,function之间用箭头连接,caller callee用双箭头。但这只适用于小程序,对于大程序图片巨大,而且箭头的跨度也极大,node也不能collapse,很不方便。
我觉得html的树结构就比较理想。function从上到下按运行顺序排列,如果有sub func就有下一层tree,还能collapse。但html的格式看着头疼,有没有自动转换的工具?
诸位大佬给点意见?
--
FROM 73.170.143.*
根本原因在于,一个很复杂的东西是不可能加上“可视化”就变简单的。
【 在 xibaomo 的大作中提到: 】
: 就是把一个程序跑的所有函数名都按顺序打印出来,caller callee之间的关系也要分清。
: 最近接手了一个老项目,极其混乱,以往都是用gdb一步步走下去,但这个工程滥用template,经常走了几十步还是在几个文件里打转转。
: 我尝试用-finstrument-functions在每个function进出的地方打印trace,然后再用graphviz转化成png,function之间用箭头连接,caller callee用双箭头。但这只适用于小程序,对于大程序图片巨大,而且箭头的跨度也极大,node也不能collapse,很不方便。
: ...................
--
FROM 180.158.51.*
callgrind
--
FROM 114.249.194.*
动静无所谓吧,能抓到老鼠的就是好猫
大多数地方靠看,少数地方靠单步调试
【 在 xibaomo 的大作中提到: 】
: 这是个静态分析工具吧
--
修改:z16166 FROM 222.129.205.*
FROM 222.129.205.*
google的perfetto是可以的,不知道在你的平台上是不是可以跑
--
FROM 106.39.151.149