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
|