Linux命令:ltrace
ltrace 命令基本介绍ltrace是 Linux 系统中用于跟踪进程调用库函数的调试工具。与strace跟踪系统调用不同ltrace专注于跟踪程序调用的共享库函数如 C 标准库函数显示函数名、参数和返回值是程序员进行程序调试和分析的重要工具。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法ltrace [OPTIONS] COMMAND [ARG...] ltrace [OPTIONS] -p PID常用选项基本选项-p, --attachPID附加到正在运行的进程-f, --follow-forks跟踪子进程-b, --no-signals不跟踪信号处理函数-D, --debug调试模式输出控制选项-o, --outputFILE将输出写入指定文件-s, --string-limitN限制字符串显示长度默认32-e, --exprSET过滤库函数调用-e traceSET指定要跟踪的库函数-e excludeSET排除指定的库函数时间选项-t, --timestamp在输出前加上时间-tt, --time-details显示微秒级时间戳-T, --elapsed-time显示函数调用耗时统计选项-c, --summary-only只显示函数调用统计摘要-C, --summary显示统计摘要但不影响正常输出其他选项-v, --verbose详细模式显示更多信息-h, --help显示帮助信息-V, --version显示版本信息使用示例1. 跟踪命令执行ltracels输出示例__libc_start_main(0x559b1e9a3000, 1, 0x7ffd4b3a5738, 0x559b1e9a3160 unfinished ... strcmp(ls, ls) 0 setlocale(6, ) zh_CN.UTF-8 bindtextdomain(coreutils, /usr/share/locale) /usr/share/locale textdomain(coreutils) coreutils2. 附加到运行中的进程ltrace-p12343. 将输出写入文件ltrace-oltrace_output.txtls4. 跟踪特定库函数ltrace-emalloc,freelsltrace-estr*ls5. 显示函数调用耗时ltrace-Tls输出示例strcmp(ls, ls) 0 0.000002 setlocale(6, ) zh_CN.UTF-8 0.0001236. 跟踪子进程ltrace-f./myprogram7. 只显示统计摘要ltrace-cls输出示例% time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 45.45 0.000500 500.00 1 strcoll 27.27 0.000300 300.00 1 opendir 18.18 0.000200 200.00 1 closedir8. 显示时间戳ltrace-tlsltrace-ttls9. 排除特定函数ltrace-eexcludemalloc,freels输出格式说明基本输出格式function(arg1, arg2, arg3) return_value常见库函数类别类别说明示例string字符串处理strcpy, strcmp, strlenmemory内存管理malloc, free, reallocstdio标准输入输出printf, scanf, fopenstdlib标准库函数atoi, rand, qsortlocale本地化setlocale, bindtextdomain与 strace 的对比特性ltracestrace跟踪对象库函数调用系统调用层次用户空间内核空间用途程序逻辑调试系统交互调试性能影响较小较大输出量通常较少通常较多实用技巧调试程序逻辑错误ltrace-etraceprintf,fprintf ./myprogram查找内存泄漏线索ltrace-emalloc,free,calloc ./myprogram分析程序初始化过程ltrace-t./myprogram21|head-30比较函数调用耗时ltrace-T-c./myprogram调试库函数参数问题ltrace-s100./myprogram相关命令strace跟踪系统调用gdbGNU 调试器perf性能分析工具valgrind内存调试工具nm查看符号表ldd查看依赖的共享库注意事项权限要求ltrace需要 root 权限才能跟踪其他用户的进程性能影响跟踪会影响程序性能但通常比strace影响小输出量复杂程序的输出可能很大建议使用-o选项保存过滤选项使用-e选项可以过滤输出只关注感兴趣的函数调试信息程序需要包含调试信息才能显示完整的函数参数安装方法Debian/Ubuntuapt-get install ltraceCentOS/RHELyum install ltrace总结ltrace是 Linux 系统中用于跟踪库函数调用的强大调试工具。它与strace互补分别从用户空间和内核空间两个层面帮助程序员理解程序的执行过程。通过ltrace可以快速定位程序在调用库函数时的问题是开发和调试过程中不可或缺的工具。