SlideShare une entreprise Scribd logo
1  sur  19
GDB实用技巧 第九艺术  徐飞
GDB简介 GNU Debugger的简称 Linux/Unix最强大非内核调试器 基于底层调试元件的ptrace库 处理多线程应用不是其强项 面向专业人士 2010/9/24
最常用命令 运行 run/r next/n 	nexti/ni  N step/s 	stepi/si  N continue/c 断点 break/b [function/file:line/addr] [if condition] del N enable/disable N 查看 print/p backtrace/bt info break frame/f N 2010/9/24
掌握以上命令足以应付日常90%的调试工作,但gdb的强大远远不止如此! VC调试器能做到的事情gdb全部可以做到!甚至SoftICE都有不及之处! 2010/9/24
高级技巧 启动参数 gdb –q: 禁用版本信息 gdb –args filename arg1 arg2…argN:命令行参数 进入gdb用load filename加载文件 #gdb –q (gdb) load gdb-demo gdb –pid 8189 :附加到运行进程 (gdb) attach 8189/detach:另一种做法 gdb –core=corename加载core文件 2010/9/24
高级技巧 运行 jump addr call addr/function 可以call一个下了断点的函数快速调试! finish 执行到本函数结束 until addr/line执行到指定地址或行数 return 立即取消函数的运行 2010/9/24
高级技巧 断点 硬件断点 hbreak 临时断点tbaddr/name 运行到后自动删除 观察点(watchpoint) watch addr awatchaddr rwatchaddr break on register: b *$eax condition N [exp] 条件断点 2010/9/24
高级技巧 查看 info registers/i  r: 所有寄存器 info args函数参数 info local 局部变量 disassemble addrfrom_addr_to转换汇编 info threads 查看当前线程 thread N 切换到指定线程 $pc: 当前指令指针(=eip) $sp:当前栈顶指针(=esp) 2010/9/24
高级技巧 x:检测内存命令 x/[num][type][size] addr: 以type为类型size为值的字节宽度显示addr地址处的num个值 Type: o, x, d, u, t(binary), f(float), a(address), i(instruction), c(char), s(string) Size: b(byte),h(halfword),w(word),g(giant=8 bytes) 2010/9/24
2010/9/24
2010/9/24
高级技巧 print/p命令的其它选项 2010/9/24
高级技巧 display相关 通用格式display/[N][F][S] exp: 每次gdb停止时按格式打印exp表达式 display/Ni $pc: 显示N条机器指令 display register:在上条指令执行后自动打印指定寄存器值 display $eax $ecx 2010/9/24
高级技巧 display(续) info display 查看当前设置过的displays undisplay N 取消之前指定的显示方式  enable/disable display N AT&T与Intel反汇编模式切换 set disassembly-flavor intel/att 2010/9/24
高级技巧 强大的set命令 set $eax=0 set my_var=$ecx set {unsigned char *}0x8048424=0xcc set *(unsigned char*)$pc=0xb3 通用格式 set variable = value 详见help set 2010/9/24
高级技巧 define命令:定制用户命令 source file_name: 加载自定义命令的批文件 ,[object Object],2010/9/24
有用资源 《GDB内幕》(GDB Internals, http://gnuarm.org/pdf/gdbint.pdf) 介绍gdb内幕知识的优秀手册,在有必要改进源代码时是很有用的 “将程序bug消灭在源代码阶段”(Squashing Bugs at the Source, http://www.linux-mag.com/2004-04/cod_01.html 一篇关于使用源代码分析技术在早期找出程序bug的文章 《内核与用户空间的调试方法》(Kernel and UserSpace Debugging Techniken, http://www.unfug.org/files/debugging.pdf) 关于调试技术的专题演讲论文集,讲述了gdb结构的许多鲜为人知的细节知识 2010/9/24
结束语 熟悉工具往往事半功倍 作为专业人员熟练掌握工具是基本要求 多gdbhelp查看参考 2010/9/24
谢谢 2010/9/24

Contenu connexe

En vedette

Mathematics Olympiad 5
Mathematics Olympiad 5Mathematics Olympiad 5
Mathematics Olympiad 5Edy Wihardjo
 
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...Daniela Papi
 
少與多的管理哲學
少與多的管理哲學少與多的管理哲學
少與多的管理哲學chengchunhao
 
A természet tükre(4)+ani (nx power lite)
A természet tükre(4)+ani (nx power lite)A természet tükre(4)+ani (nx power lite)
A természet tükre(4)+ani (nx power lite)VarganeAnny
 
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnaki
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnakiNgā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnaki
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnakiRuth Lemon
 
Как выявить резервы повышения оборачиваемости
Как выявить резервы повышения оборачиваемостиКак выявить резервы повышения оборачиваемости
Как выявить резервы повышения оборачиваемостиОльга Правук
 
Expositie ETC 12 februari 2017 | Saskia Vugts Portretschilder
Expositie ETC 12 februari 2017 | Saskia Vugts PortretschilderExpositie ETC 12 februari 2017 | Saskia Vugts Portretschilder
Expositie ETC 12 februari 2017 | Saskia Vugts PortretschilderSaskia Vugts Portretschilder
 
'Reis van de Heldin' de bijdrage van Saskia Vugts op pagina 10/11 en in de q...
'Reis van de Heldin'  de bijdrage van Saskia Vugts op pagina 10/11 en in de q...'Reis van de Heldin'  de bijdrage van Saskia Vugts op pagina 10/11 en in de q...
'Reis van de Heldin' de bijdrage van Saskia Vugts op pagina 10/11 en in de q...Saskia Vugts Portretschilder
 
Ice co skateway + glijsbaan nl presentatie 2011
Ice co skateway + glijsbaan nl presentatie 2011Ice co skateway + glijsbaan nl presentatie 2011
Ice co skateway + glijsbaan nl presentatie 2011jolanda_ambagtsheer
 
Saskia Vugts Portretschilder | Portretten 2007-2017
Saskia Vugts Portretschilder | Portretten 2007-2017 Saskia Vugts Portretschilder | Portretten 2007-2017
Saskia Vugts Portretschilder | Portretten 2007-2017 Saskia Vugts Portretschilder
 
젊은 의사 강의 서울의료원내과 20150527_slideshare upload
젊은 의사 강의 서울의료원내과 20150527_slideshare upload젊은 의사 강의 서울의료원내과 20150527_slideshare upload
젊은 의사 강의 서울의료원내과 20150527_slideshare uploadChiweon Kim
 

En vedette (15)

Mathematics Olympiad 5
Mathematics Olympiad 5Mathematics Olympiad 5
Mathematics Olympiad 5
 
Rafa unit 1
Rafa unit 1Rafa unit 1
Rafa unit 1
 
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...
Changing the Way the World Views "Aid": Marketing for Impact, Investing Time ...
 
少與多的管理哲學
少與多的管理哲學少與多的管理哲學
少與多的管理哲學
 
A természet tükre(4)+ani (nx power lite)
A természet tükre(4)+ani (nx power lite)A természet tükre(4)+ani (nx power lite)
A természet tükre(4)+ani (nx power lite)
 
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnaki
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnakiNgā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnaki
Ngā rauemi hāpai i tā mātou rangahau me te toi mō ngā tuna me ngā hīnaki
 
Nganh oto 140716_dnse
Nganh oto 140716_dnseNganh oto 140716_dnse
Nganh oto 140716_dnse
 
Как выявить резервы повышения оборачиваемости
Как выявить резервы повышения оборачиваемостиКак выявить резервы повышения оборачиваемости
Как выявить резервы повышения оборачиваемости
 
Expositie ETC 12 februari 2017 | Saskia Vugts Portretschilder
Expositie ETC 12 februari 2017 | Saskia Vugts PortretschilderExpositie ETC 12 februari 2017 | Saskia Vugts Portretschilder
Expositie ETC 12 februari 2017 | Saskia Vugts Portretschilder
 
Rafa unit 4
Rafa unit 4Rafa unit 4
Rafa unit 4
 
'Reis van de Heldin' de bijdrage van Saskia Vugts op pagina 10/11 en in de q...
'Reis van de Heldin'  de bijdrage van Saskia Vugts op pagina 10/11 en in de q...'Reis van de Heldin'  de bijdrage van Saskia Vugts op pagina 10/11 en in de q...
'Reis van de Heldin' de bijdrage van Saskia Vugts op pagina 10/11 en in de q...
 
Ice co skateway + glijsbaan nl presentatie 2011
Ice co skateway + glijsbaan nl presentatie 2011Ice co skateway + glijsbaan nl presentatie 2011
Ice co skateway + glijsbaan nl presentatie 2011
 
Rafa3
Rafa3Rafa3
Rafa3
 
Saskia Vugts Portretschilder | Portretten 2007-2017
Saskia Vugts Portretschilder | Portretten 2007-2017 Saskia Vugts Portretschilder | Portretten 2007-2017
Saskia Vugts Portretschilder | Portretten 2007-2017
 
젊은 의사 강의 서울의료원내과 20150527_slideshare upload
젊은 의사 강의 서울의료원내과 20150527_slideshare upload젊은 의사 강의 서울의료원내과 20150527_slideshare upload
젊은 의사 강의 서울의료원내과 20150527_slideshare upload
 

Similaire à Gdb实用技巧

手把手教你玩转Gdb
手把手教你玩转Gdb手把手教你玩转Gdb
手把手教你玩转GdbZesheng Wu
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)William Lee
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part IIJoseph Chang
 
Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture lusecheng
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹kao kuo-tung
 
在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMDYangHao Yuan
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境dbabc
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 gruntLearningTech
 

Similaire à Gdb实用技巧 (12)

手把手教你玩转Gdb
手把手教你玩转Gdb手把手教你玩转Gdb
手把手教你玩转Gdb
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)
 
Outside
OutsideOutside
Outside
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture Coscup2011: porting android to brand-new cpu architecture
Coscup2011: porting android to brand-new cpu architecture
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹
 
在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
 
Ian 20150515 grunt
Ian 20150515 gruntIan 20150515 grunt
Ian 20150515 grunt
 

Gdb实用技巧