基于strace输出的命令执行工具
straceexec的Python项目详细描述
straceexec
straceexec是一个python脚本,它允许回放和分析 从strace日志执行命令。这对于调试命令很有用 嵌入了几层深的重要自动设置。一个特定的 用例将调试来自安装程序的生成系统的特定命令 许多环境变量或具有复杂的命令行调用。
用法
# strace -f -v -s 10000 -o strace.log ninja
# straceexec strace.log
0: ninja -:ENV:- LANG=en_US.UTF-8 USERNAME=ddedrick SHELL=/bin/bash output=default GDM_LANG=en_US.UTF EDITOR=vimx PATH=/u
1: /bin/sh -c /usr/lib64/ccache/cc -Dfoo_EXPORTS -fPIC -MD -MT CMakeFiles/foo.dir/foo.c.o -MF CMakeFiles/foo.dir/foo.c.o
2: /usr/lib64/ccache/cc -Dfoo_EXPORTS -fPIC -MD -MT CMakeFiles/foo.dir/foo.c.o -MF CMakeFiles/foo.dir/foo.c.o.d -o CMakeF
3: /bin/sh -c : && /usr/lib64/ccache/cc -fPIC -shared -Wl,-soname,libfoo.so.0 -o libfoo.so.0.3.0 CMakeFiles/foo.dir/fo
4: /usr/lib64/ccache/cc -fPIC -shared -Wl,-soname,libfoo.so.0 -o libfoo.so.0.3.0 CMakeFiles/foo.dir/foo.c.o -:ENV:- LANG=
5: /usr/bin/cc -fPIC -shared -Wl,-soname,libfoo.so.0 -o libfoo.so.0.3.0 CMakeFiles/foo.dir/foo.c.o -:ENV:- LANG=en_US.UTF
6: /usr/libexec/gcc/x86_64-redhat-linux/8/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/8/liblto_plugin.so -plugi
7: /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-redhat-linux/8/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat
8: /bin/sh -c /usr/bin/cmake -E cmake_symlink_library libfoo.so.0.3.0 libfoo.so.0 libfoo.so && : -:ENV:- LANG=en_US.UTF-
9: /usr/bin/cmake -E cmake_symlink_library libfoo.so.0.3.0 libfoo.so.0 libfoo.so -:ENV:- LANG=en_US.UTF-8 USERNAME=ddedri
Enter the number of the command you would like to execute
Append an n to not copy the environment
Append a p to print the full command and exit
Append a g to run under gdb
Select: 1
strace输出应该与-v一起收集,以确保参数不 留有足够大尺寸的和-s 截断。
默认情况下,该命令将运行并具有相同的环境设置
在strace输出中可以找到。有几个选项可供选择
修改此行为。附加一个n
将使用当前
环境而不是strace日志中的环境。附加一个
p
不会执行命令,而是将其与
它的环境。附加一个g
将启动gdb
可执行文件、参数和环境已安装。
贡献
欢迎您的贡献、问题和功能请求。请随意打开 根据需要拉取请求或问题。
作者
由dan dedrick编写,用于简化隔离、复制和调整构建 系统问题。
许可证
straceexec是根据mit许可证发行的。查看附带的许可证 文件以获取详细信息。