程序调用追踪

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

相关推荐
闲云野鹤在人间6 分钟前
KVM虚拟化实战|CentOS‑Stream8 两种安装方式+模板制作+基础使用
linux·运维·服务器·centos
小张同学a.6 分钟前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
Android系统攻城狮19 分钟前
Linux PipeWire深度解析之pw_core_get_registry调用流程与实战(九十一)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
小义_24 分钟前
JDK 深度解析
java·linux·开发语言·python·面试
邪修king25 分钟前
Re:Linux 系统编程篇 (十二):进程篇(一)基础与 fork 系统调用全解
linux·运维·服务器
牢姐与蒯29 分钟前
Linux进程(五).之环境变量
linux·运维·服务器·ubuntu
raindayinrain1 小时前
深入理解Linux内核--系统调用,性能优化
linux·性能优化·系统调用·返回值·入参·内核态用户态地址访问
码上有光1 小时前
Linux:进程控制和进程替换
java·linux·服务器·进程控制·进程替换
爱和冰阔落1 小时前
【Linux】多线程打印为什么会乱?pthread 创建、等待、退出、取消与分离全实战
linux·运维·c++·redis
DYWorker0011 小时前
基于RK3568的Linux驱动开发:实战——WDT
linux·驱动开发