• T
    tracing: identify which executable object the userspace address belongs to · b54d3de9
    Török Edwin 提交于
    Impact: modify+improve the userstacktrace tracing visualization feature
    
    Store thread group leader id, and use it to lookup the address in the
    process's map. We could have looked up the address on thread's map,
    but the thread might not exist by the time we are called. The process
    might not exist either, but if you are reading trace_pipe, that is
    unlikely.
    
    Example usage:
    
     mount -t debugfs nodev /sys/kernel/debug
     cd /sys/kernel/debug/tracing
     echo userstacktrace >iter_ctrl
     echo sym-userobj >iter_ctrl
     echo sched_switch >current_tracer
     echo 1 >tracing_enabled
     cat trace_pipe >/tmp/trace&
     .... run application ...
     echo 0 >tracing_enabled
     cat /tmp/trace
    
    You'll see stack entries like:
    
       /lib/libpthread-2.7.so[+0xd370]
    
    You can convert them to function/line using:
    
       addr2line -fie /lib/libpthread-2.7.so 0xd370
    
    Or:
    
       addr2line -fie /usr/lib/debug/libpthread-2.7.so 0xd370
    
    For non-PIC/PIE executables this won't work:
    
       a.out[+0x73b]
    
    You need to run the following: addr2line -fie a.out 0x40073b
    (where 0x400000 is the default load address of a.out)
    Signed-off-by: NTörök Edwin <edwintorok@gmail.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    b54d3de9
trace.c 83.3 KB