环境配置
- 操作系统:Ubuntu16.04.10
- 处理器架构:x86_64
下载地址
- 链接:https://pan.baidu.com/s/1uFZnRq0CGavsf92DCbdTEQ
- 提取码:9plz
安装步骤
- 下载安装包,解压安装包
tar -jxvf calltree-2.3.tar.bz2
cd calltree-2.3
- 编译错误与解决
make
PS:会产生如上图所示的编译错误
- 原因:calltree的此版本包含x86_64位对应的Makefile规则文件,可以直接把i686-linux-cc.rul复制为x86_64-linux-cc.rul
- 解决方案:
cp ./Gmake.linux /usr/bin/Gmake
cp RULES/i686-linux-cc.rul RULES/x86_64-linux-cc.rul
make
PS:发现有上图所示编译错误
- 原因:作者编写代码时使用的函数名之后被gcc定义为关键字,造成编译冲突
- 解决方案:
find . -name "*.[c|h]" |xargs sed -i -e "s/fexecve/fexecve_calltree/"
find . -name "*.[c|h]" |xargs sed -i -e "s/getline/getline_calltree/"
make
- 配置
# 拷贝目录到/usr/local/
cp -rf ./calltree-2.3 /usr/local/
# 打开目录
cd /usr/local/calltree-2.3/
# 建立软链接到/bin/目录
ln -s /usr/local/calltree-2.3/calltree/OBJ/x86_64-linux-cc/calltree /bin/calltree
# 测试工具命令
calltree -help
- 使用
# 从main函出发
calltree -np -gb -m [path/*.c]
# 不从main函数出发
calltree -np -gb [path/*.c]
# 生成.dot文件
calltree -np -gb -m [path/*.c] -dot > trace_main.dot
# .dot转.pdf文件
dot -Tpdf ./trace_main.dot -o trace_main.pdf
# 若没有安装dot命令
sudo apt-get install graphviz