• ltrace 调试 命令详解


    原文链接

    说明:本文档简要描述了ltrace的命令,在文末有本命令的基本应用。

    ltrace - A library call tracer
    Trace library calls of a given program.

    1。 -a, --align=COLUMN align return values in a secific column.
    对齐具体某个列的返回值

    2。 -c                  count time and calls, and report a summary on exit.
    计算时间和调用,并在程序退出时打印摘要

    3。 -C, --demangle      decode low-level symbol names into user-level names.
    解码低级别名称(内核级)为用户级名称

    4。 -d, --debug         print debugging info.
    打印调试信息

    5。 -e expr             modify which events to trace.
    改变跟踪的事件

    6。 -f                  follow forks.
    跟踪子进程

    7。 -h, --help          display this help and exit.
    打印帮助信息

    8。 -i                  print instruction pointer at time of library call.
    打印指令指针,当库调用时

    9。 -l, --library=FILE print library calls from this library only.
    只打印某个库中的调用

    10。 -L                  do NOT display library calls.
    不打印库调用(注,不打印库调用信息,咱要你做什么呀)

    11。 -n, --indent=NR     indent output by NR spaces for each call level nesting.
    对每个调用级别嵌套以NR个空格进行缩进输出

    12。 -o, --output=FILE   write the trace output to that file.
    把输出定向到文件

    13。 -p PID              attach to the process with the process ID pid.
    附着在值为PID的进程号上进行ltrace

    14。 -r                  print relative timestamps.
    打印相对时间戳

    15。 -s STRLEN           specify the maximum string size to print.
    设置打印的字符串最大长度

    16。 -S                  display system calls.
    显示系统调用

    17。 -t, -tt, -ttt       print absolute timestamps.
    打印绝对时间戳

    18。 -T                  show the time spent inside each call.
    输出每个调用过程的时间开销

    19。 -u USERNAME         run command with the userid, groupid of username.
    使用某个用户ID或组ID来运行命令

    20。 -V, --version       output version information and exit.
    打印版本信息,然后退出

    21。 -x NAME             treat the global NAME like a library subroutine.
    ----- 不好意思,这句话还真不知怎么翻译好 --------

    #########################################################################################
    下面是常见的几种应用场景

    1。最基本应用,不带任何参数
    [guest@localhost tmp]$ ltrace ./a.out 
    __libc_start_main(0x80484aa, 1, 0xbfc07744, 0x8048550, 0x8048540 <unfinished ...>
    printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10   no2:6   diff:4 ) = 24
    printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9     no2:7   diff:2 ) = 23
    printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8     no2:8   diff:0 ) = 23
    --- SIGFPE (Floating point exception) ---
    +++ killed by SIGFPE +++

    2。输出调用时间开销
    [guest@localhost tmp]$ ltrace -T ./a.out 
    __libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540 <unfinished ...>
    printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10   no2:6   diff:4 ) = 24 <0.000972>
    printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9     no2:7   diff:2 ) = 23 <0.000155>
    printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8     no2:8   diff:0 ) = 23 <0.000153>
    --- SIGFPE (Floating point exception) ---
    +++ killed by SIGFPE +++

    3。显示系统调用
    [guest@localhost tmp]$ ltrace -S ./a.out 
    SYS_brk(NULL)                                                                = 0x9e20000
    SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644)                               = 0
    SYS_open("/etc/ld.so.preload", 0, 02)                                        = 3
    SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3)                                  = 0
    SYS_mmap2(0, 17, 3, 2, 3)                                                    = 0xb7f2a000
    SYS_close(3)                                                                 = 0
    SYS_open("/lib/libcwait.so", 0, 00)                                          = 3
    SYS_read(3, "\177ELF\001\001\001", 512)                                      = 512
    SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658)                            = 0
    SYS_mmap2(0, 4096, 3, 34, -1)                                                = 0xb7f29000
    SYS_mmap2(0, 5544, 5, 2050, 3)                                               = 0x423000
    SYS_mmap2(0x424000, 4096, 3, 2066, 3)                                        = 0x424000 
    .............省去若干行

  • 相关阅读:
    Elasticsearch 之 Hello World (二)
    Elasticsearch 之 Hello World (一)
    Linux动态gif图的录制
    Vim配置及说明——IDE编程环境
    Vim自动补全插件----YouCompleteMe安装与配置
    Linux查看硬件信息(北桥芯片组、南桥、PCI接口、CPU等)
    Linux中源码安装编译Vim
    Linux安装搜狗拼音输入法-sogoupinyin
    开始写博客,与ITer们互相学习
    笔记本多硬盘win7下U盘安装Cnetos7引导问题!
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2536974.html
Copyright © 2020-2023  润新知