strace 可用于跟踪一个程序里使用了哪些系统编程函数
用法: strace 程序名 程序执行时的参数
ltrace 可跟踪程序里调用的库函数
用法: ltrace 程序名
file 可查看一个文件的类型
用法: file 文件名
如果file查看的是一个程序,可以查看到程序的位数, 大小端, 是否依赖动态库
如:
file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
ldd 可查看一个程序所有依赖的动态库及所缺的动态库
如: ldd a.out
linux-vdso.so.1 => (0x00007fff225ff000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b91600000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b90e00000)
/
valgrind 可用于查看程序是否有内存泄漏与访问越界
用法: valgrind 程序名
如果出现的信息有: Invalid read/write of size ...
表示有可能是访问越界了
如果出现的堆信息有: HEAP SUMMARY:
==4224== in use at exit: 2 bytes in 1 blocks
==4224== total heap usage: 1 allocs, 0 frees, 2 bytes allocated
"frees"的次数与"allocs"的次数不匹配,则有可能是内存泄漏
LEAK SUMMARY:
==4224== definitely lost: 2 bytes in 1 blocks
==4224== indirectly lost: 0 bytes in 0 blocks
==4224== possibly lost: 0 bytes in 0 blocks
==4224== still reachable: 0 bytes in 0 blocks
==4224== suppressed: 0 bytes in 0 blocks
//
nm a.out //可查看a.out程序里使用的函数名及函数地址,全局变量等信息
readelf -h a.out //可查看elf可执行文件的文件头
readelf -a a.out //查看elf文件的格式信息
objdump -D a.out //反汇编
strip : 可把程序里的符号标志去掉, 程序功能不变
用法: strip a.out -o b.out //把a.out里的符号标志全部去除掉,生成b.out.
killall 程序名 //把所有“程序名”的进程杀死
linux下开发必备的工具
最新推荐文章于 2024-08-08 16:33:40 发布