在使用 gprof2dot 进行分析时隐藏函数的长描述

Hide long description of function while profiling with gprof2dot

我使用 gprof2dot 来分析我的应用程序:

./gprof2dot.py -f callgrind callgrind.out.x | dot -Tsvg -o output.svg

source

尽管如此,它为我提供了漂亮的图形分析,但每个框中的每个函数的名称都很长,远远超过了屏幕尺寸。由于 boost 库对模板的使用率很高。看看其中一个函数名称:

std::reference_wrapper<boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag> > std::ref<boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag> >(boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::range_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag>&)

有什么方法可以去除函数的名称 space 和模板甚至参数,使其在图表中看起来更小吗?

PS. 图片很大,我没法转成png。我不知道你是否可以下载并打开这个 10MB 的图像 (link)。

./gprof2dot.py 有两个相关选项:

-s, --strip           strip function parameters, template parameters, and
                      const modifiers from demangled C++ function names
-w, --wrap            wrap function names

我个人更喜欢 -w,因为我仍然可以区分模板。