Filter 从valgrind';s callgrind输出

Filter 从valgrind';s callgrind输出,filter,valgrind,call-graph,Filter,Valgrind,Call Graph,我正在尝试为服务器生成一个调用图,用于文档编制不用于任何类型的分析 我使用以下命令生成输出: sudo valgrind --tool=callgrind --dump-instr=yes /opt/ats-trunk/bin/traffic_server 并用:转换为.dot文件,但其中包含的信息太多,无法用作文档 我想过滤掉对libc、libstdc++、libtcl、libhwloc等库的调用 n、 b:我一直想把那些无用的图书馆翻出来,但这看起来很麻烦,充其量也不完整 非常感谢您提前给

我正在尝试为服务器生成一个调用图,用于文档编制用于任何类型的分析

我使用以下命令生成输出:

sudo valgrind --tool=callgrind --dump-instr=yes /opt/ats-trunk/bin/traffic_server
并用:转换为.dot文件,但其中包含的信息太多,无法用作文档

我想过滤掉对libc、libstdc++、libtcl、libhwloc等库的调用

n、 b:我一直想把那些无用的图书馆翻出来,但这看起来很麻烦,充其量也不完整


非常感谢您提前给出答案。

在这里震耳欲聋的沉默之后,事实上,无论我问到哪里,我都转向valgrind users@ML。以下是线索:

Josef的回答非常有帮助,我用perl的耐心编写了一个脚本,帮助我筛选出调用图中不需要的库

该脚本依赖于告诉callgrind要格外详细:

valgrind --tool=callgrind --dump-instr=yes --compress-pos=no \
  --compress-strings=no /opt/ats-trunk/bin/traffic_server
通过这种方式,它将生成字符串而不是参考号,使其更易于解析:

#/usr/bin/perl
使用Modern::Perl;
需要文件::Temp;
my$cob=qr{^cob=/(?:usr/)?lib};
my$ob=qr{^ob=/(?:usr/)?lib/;
我的$calls=qr{^calls=};
打开(my$fh,'文件名;
开放式($tmp,'