程序调用追踪

ar(Archiver)是 Linux 下创建静态库的标准工具。而 gcc-ar 是它的一个包装器(Wrapper) 。笔者想要知道gcc-ar调用ar的细节,比如参数信息。

1)使用strace

bash 复制代码
strace -s 1024 -f -e execve gcc-ar

2)创建一个"伪造"的 ar

可以在不中断流程的情况下,记录所有gcc-ar的动作,可以玩个"调包计"

第一步,编写一个脚本 my-ar.sh

bash 复制代码
#!/bin/bash
echo "gcc-ar called ar with: $@" >> /tmp/ar_commands.log
# 这个地方需要写程序的绝对路径,如果直接使用ar,有可能陷入死循环,因为这里ar就是这个脚本程序
/devtoolset-8-binutils-2.30-55/bin/ar "$@"

第二步,给执行权限,chmod +x my-ar.sh

第三步,诱骗 gcc-ar : 由于 gcc-ar 往往去 PATH 里找 ar,你可以临时修改环境变量:

bash 复制代码
export PATH=$(pwd):$PATH
ln -s my-ar.sh ar

第四步,查看结果,cat /tmp/ar_commands.log

相关推荐
代码中介商2 小时前
Linux 进程间通信(IPC):管道与信号量完全指南
linux·运维·服务器
张青贤2 小时前
linux离线部署docker和docker-compose
linux·docker·docker-compose
晨晖22 小时前
linux命令7(systemctl服务进行管理)
linux·运维·服务器
Nice__J2 小时前
ISO26262功能安全——SafeOS
java·linux·安全
不仙5203 小时前
Hermes 接入飞书(Feishu/Lark)部署文档
linux·服务器·ai
夹芯饼干3 小时前
虚拟机指令第六节
java·linux·服务器
The Chosen One9853 小时前
遗漏知识点补充(lesson12&&Linux进程(1))
linux·运维·服务器
醇氧3 小时前
WSL2(Windows Subsystem for Linux ) 从入门到实践指南
linux·运维·服务器·windows·学习
wangyangyangcumt3 小时前
银河麒麟V10 SP3离线安装Nginx1.21.5全记录
linux·运维·数据库