aboutsummaryrefslogtreecommitdiffhomepage
path: root/gdb.txt
diff options
context:
space:
mode:
Diffstat (limited to 'gdb.txt')
-rw-r--r--gdb.txt146
1 files changed, 0 insertions, 146 deletions
diff --git a/gdb.txt b/gdb.txt
deleted file mode 100644
index f064cb5..0000000
--- a/gdb.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-# gdb
---------------------------------------------------------------------------------
-
-# toc
-------
- |gdb|
- |opts|
- |prompt|
- |user_commands|
- |hooks|
- |flows|
-
-# gdb(1) *gdb*
-=========
- gdb [opts] [exe [coredump | pid]]
- gdb [opts] --args exe <exe-args>
- opts: *opts*
- -p <pid> attach to pid
- -x <file> execute script <file> before prompt
- -ex <cmd> execute command <cmd> before prompt
- --tty <tty> set I/O tty for debugee (see *prompt* for details)
-
-
- prompt: *prompt*
- tty <tty> set <tty> as tty for debugee. make sure nobody
- reads from target tty, easiest is to spawn a shell
- and run
- > while true; do sleep 1024; done
-
- set follow-fork-mode <child | parent>
- specify which process to follow on fork(2)
-
- sharedlibrary [regex]
- load symbols of shared lib, if REGEX then only symbols
- for matching libs
-
- break [-qualified] <sym> thread <tnum>
- set a breakpoint only on a specific thread
- -qualified: sym must be fully qualified (quiet handy
- to set breakpoints on C symbols in C++ contexts)
-
- rbreak <regex> set breakpoints based on symbols matching regex
- <regex> is internally expanded to .*<regex>.*
- so 'rbreak foo' matches barfoobar()
-
- command [bp_list] define commands to run after breakpoint hit if
- BP_LIST not supplied attach command to last
- created bp
-
- BP_LIST: space separates list, eg 'command 2 5-8'
- to run command for bp 2,5,6,7,8
-
- info functions [regex]
- list functions according to REGEX, if REGEX empty,
- list all
-
- info variables [regex]
- list variables according to REGEX, if REGEX empty,
- list all
-
- info handle [signal]
- list bevahior for SIGNAL, if SIGNAL empty list all signals
-
- handle signal <action>
- configure how gdb handles SIGNAL which is ment for the debugee
- <action>:
- stop/nostop catch signal in gdb and break
- print/noprint print message when gdb catches signal
- pass/nopass pass signal down to debugee
- noignore/ignore synonyms for
-
- catch signal <signal>
- create a catchpoint for SIGNAL
-
-
- user commands: *user_commands*
- define <cmd> defines user command <cmd> to be run
- # cmds in prompt or script
- end
-
- document <cmd> define documentation for cmd <cmd>
- # docu
- end
-
- help user-defined list user defined commands
- help <cmd> list documentation for command <cmd>
-
-
- hooks: *hooks*
- define hook-<cmd> run commands defined in hook before
- # cmds executing <cmd>
- end
-
- define hookpost-<cmd> run commands defined in hookpost after
- # cmds executing <cmd>
- end
-
-
- flows: *flows*
- # catch SIGSEGV and execute some actions once it happends
- - script:
- catch signal SIGSEGV
- command
- bt
- c
- end
-
- # quickly execute gdb command on running process, eg get backtrace from
- # thread 1
- - cmd:
- $> gdb -ex 'thread 1' -ex 'bt' -p <PID>
-
- # script gdb for automating debugging sessions
- - script: run.gdb
- set pagination off
-
- break mmap
- command
- info reg rdi rsi rdx
- bt
- c
- end
-
- #initial drop
- c
-
- - cmd:
- $> gdb -p <PID> -x ./run.gdb --batch &> run.log
-
- # workaround command + finish bug
- # issue: when using finish in a command block, actions after finish will not
- # be executed
- - script:
- define handler
- bt
- finish
- info reg rax
- end
-
- command
- handler
- end
-
---------------------------------------------------------------------------------
-vim:ft=help:sts=2:et:tw=80:cc=80:fo+=t
-