aboutsummaryrefslogblamecommitdiffhomepage
path: root/debug.txt
blob: 9579f77fca56457158d4ea196d2c246f891bbdd5 (plain) (tree)
























                                                                                
                     

                          
                            




                                                                 




                                                                      


                                                                                          







                                                         
                                             

                                                                
 




                                                                                            










                                                                                
.:: debugging ::.
--------------------------------------------------------------------------------

# print syscalls of process with all threads (-f) of running process
strace -f -p <pid>
# only trace certain syscalls
strace -f -p <pid> -e trace=open,socket
# trace signals delivered to process
strace -f -p <pid> -e signal

# dump stack of process and all threads
pstack <pid>

# print file flags
# +fg    print file flag abbreviations
lsof +fg -p <pid>

# print process virt mem map
# compared to /proc/<>/maps it shows the size of the mappings
pmap <pid>


# get supported events
perf list

## show process stats
perf stat -p <pid>
perf stat -p <pid> -I <ms>
# select events of interests
perf stat -p <pid> -e cycles,faults,cache-misses,context-switches

# -K    hide kernel threads
perf top -F 99 -p <pid> -K

## record measurement into db
# -g uses 'fb' = frame-pointer as default method to collect backtraces
# tell gcc to not optimize fp out -fno-omit-frame-pointer
perf record -F 99 -p <pid> -g
# use post processing and dwarf to collect backtraces
perf record -F 99 -p <pid> --call-graph dwarf
perf record -F 99 -p <pid> -e instructions,cpu-cycles,faults,cache-misses,context-switches

## report perf db
# print to stdio
perf report -n --stdio
# use tui
perf report -g graph,0.5,caller

# flamegraph (https://github.com/brendangregg/FlameGraph)
# record events of interest, eg page-faults
perf record -e page-faults --call-graph dwarf
perf script | FlameGraph/stackcollapse-perf.pl > out.perf-folded
FlameGraph/flamegraph.pl out.perf-folded > perf-trace.svg

# record multiple events and generate flamegraphs
perf record --call-graph dwarf -p $(pgrep -u jstolp -n sim) -F 200 -e cpu-cycles,page-faults
perf script --per-event-dump
# fold & generate as above

# print supported events
ophelp

operf -p <pid>

opreport -c
opreport -l

--------------------------------------------------------------------------------
vim:sts=2:et:tw=80:cc=80:fo+=t:ft=help