Upload
kent-chen
View
1.866
Download
7
Embed Size (px)
DESCRIPTION
GDB Rocks! Basic gdb case study, advanced gdb tricks, shared library debugging
Citation preview
Kent Chen (chenkaie)
http://chenkaie.blogspot.com
@chenkaie on GitHub
@chenkaie on SlideShare
@chenkaie on LinkedIn
@chenkaie on Twitter
printf / printk“打印”久了也挺煩人的
Debugging by Endless Printing
C interpreter1. $ gdb `which gdb`
2. (gdb) start
3. Enjoy your world…
• Example:
(gdb) p 1 + 2 + abs(-‐3)(gdb) p strcmp("VIVOTEK", "AXIS")(gdb) x/s getenv(“HOME”)(gdb) p (char*)getenv("HOME")(gdb) p (char)*getenv("HOME")(gdb) p printf("%d\n", 12345678)
Signal HandlerTerminal hang / Reboot PC
You have to close terminal (e.g., PuTTY, iTerm,...)
Conventional solution
GNU Screen / Tmux
nohup
GDB solution
$ gdb [program] [pid]
(gdb) handle SIGHUP nopass
(gdb) continue
(gdb) handle SIGHUPSignal Stop Print Pass to program DescriptionSIGHUP Yes Yes Yes Hangup(gdb) handle SIGHUP nopassSignal Stop Print Pass to program DescriptionSIGHUP Yes Yes No Hangup
Program received signal SIGHUP, Hangup.0x0000003ac7a954e0 in __nanosleep_nocancel () from /lib64/libc.so.6(gdb)Continuing.
時間有限下回揭曉
File Descriptor Hijacking / 劫持 FDs 之奇技淫巧
Reference快快樂樂學 GNU Debugger (gdb) Part I + II (Jserv)
http://jserv.sayya.org/debugger/
http://pyclewn.sourceforge.net/
http://clewn.sourceforge.net/
http://reverse.put.as/
GDB的妙用 (vgod)
[GDB Tricks] File Descriptor Hijacking / 劫持 FDs 之奇技淫巧