SlideShare une entreprise Scribd logo
1  sur  55
手把手教你玩转 GDB 小武哥 <http://www.wuzesheng.com> 2010.11
主要内容 ,[object Object],[object Object],[object Object],[object Object],07/14/11 http:/www.wuzesheng.com
[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
1.  温故知新 --- 程序的秘密 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 ) GCC 做了什么 ,[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 ) GCC 做了什么 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 ) GCC 做了什么 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu 总结 — GCC 实际上只是对多个工具的包装,它会根据不同的参数,去调用 cpp 、 ccl(cclplus) 、 as 或者 ld 去完成程序编译过程中的一系列工作
( 2 )进程地址空间 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )进程地址空间 07/14/11 手把手教你玩转 GDB--ZeshengWu
2. 牛刀小试 ---GDB 初探 ,[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 )启动 GDB 开始调试 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],shell 小技巧 —可以在 GDB 中直接执行 shell 命令,这样就会暂时退出 GDB,  回到 shell 终端, 在 shell 执行完 command 后,然后在 shell 中执行 exit 命令,便可回到 GDB 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu nexti 和 stepi 的区别 --nexti 在执行某机器指令时,如果该指令是函数调用,那么程序执行直到该函数调用结束时才停止
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
[object Object],[object Object],( 2 )常用调试命令介绍 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )常用调试命令介绍 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 3 )退出 GDB 结束调试 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],kill 小技巧 -- 不退出 GDB 而对 更新 当前正在调试的应用程序 : 在 GDB 中 用 kill 杀掉子进程, 然后直接更换应用程序可执行文件 ,再重新执行 run , GDB 便可加载新的可执行程序启动调试 07/14/11 手把手教你玩转 GDB--ZeshengWu
( 4 )寻求帮助 ,[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 4 )寻求帮助 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
3. 大显身手 --- 玩转 GDB ,[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 )函数调用栈探密 ,[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 )函数调用栈探密 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 )函数调用栈探密 ,[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 1 )函数调用栈探密 ,[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )调试中信号的响应 ,[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu Question — 如何在 GDB 调试这个程序的时候,让这个程序收到 SIGINT 信号 ?
( 2 )调试中信号的响应 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )调试中信号的响应 ,[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 2 )调试中信号的响应 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 3 )修改程序运行、源码 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 3 )修改程序运行、源码 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu 回忆 — 结合我们前面介绍的 shell, make, kill 和本节的 edit 命令,我们完全可以直接在 GDB 中完成很多的工作!
( 4 )多线程调试 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 5 )自定义命令 07/14/11 手把手教你玩转 GDB--ZeshengWu Question — 如何在 GDB 查看这个 list 里面的每个元素 ?
( 5 )自定义命令 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu 3 )循环语句: while   cond-expr … end 4 )定义一个命令的文档信息,在 help   commandname 的时候可以显示: document   commandname  …   end 5)  $arg0…$arg9 :表示命令行参数,最多 10 个
( 5 )自定义命令 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 5 )自定义命令 ,[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 5 )自定义命令 ,[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 5 )自定义命令 ,[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
( 5 )自定义命令 ,[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
4. 学而时习之 --- 总结回顾 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],07/14/11 手把手教你玩转 GDB--ZeshengWu
07/14/11 手把手教你玩转 GDB--ZeshengWu

Contenu connexe

En vedette

Renown Pr & Media Consultants
Renown Pr & Media ConsultantsRenown Pr & Media Consultants
Renown Pr & Media ConsultantsPinkal Jayswal
 
Opening opportunities in Pakistan
Opening opportunities in PakistanOpening opportunities in Pakistan
Opening opportunities in PakistanBabar Malik
 
WriteyBoard Product Catalog 2016
WriteyBoard Product Catalog 2016WriteyBoard Product Catalog 2016
WriteyBoard Product Catalog 2016Christian Tomelius
 
WriteyBoard Sales Catalog 2016
WriteyBoard Sales Catalog 2016WriteyBoard Sales Catalog 2016
WriteyBoard Sales Catalog 2016Christian Tomelius
 
Business plan of pole vaulters school
Business plan of pole vaulters schoolBusiness plan of pole vaulters school
Business plan of pole vaulters schoolBabar Malik
 
USAID Interventions and Results in Agriculture Exports at Dawn Expo
USAID Interventions and Results in Agriculture Exports at Dawn ExpoUSAID Interventions and Results in Agriculture Exports at Dawn Expo
USAID Interventions and Results in Agriculture Exports at Dawn ExpoBabar Malik
 
Business plan of jermyn street school
Business plan of jermyn street schoolBusiness plan of jermyn street school
Business plan of jermyn street schoolBabar Malik
 

En vedette (9)

Renown Media
Renown MediaRenown Media
Renown Media
 
Renown Pr & Media Consultants
Renown Pr & Media ConsultantsRenown Pr & Media Consultants
Renown Pr & Media Consultants
 
Opening opportunities in Pakistan
Opening opportunities in PakistanOpening opportunities in Pakistan
Opening opportunities in Pakistan
 
WriteyBoard Product Catalog 2016
WriteyBoard Product Catalog 2016WriteyBoard Product Catalog 2016
WriteyBoard Product Catalog 2016
 
WriteyBoard Sales Catalog 2016
WriteyBoard Sales Catalog 2016WriteyBoard Sales Catalog 2016
WriteyBoard Sales Catalog 2016
 
WriteyBoard Dry Erase Paint
WriteyBoard Dry Erase PaintWriteyBoard Dry Erase Paint
WriteyBoard Dry Erase Paint
 
Business plan of pole vaulters school
Business plan of pole vaulters schoolBusiness plan of pole vaulters school
Business plan of pole vaulters school
 
USAID Interventions and Results in Agriculture Exports at Dawn Expo
USAID Interventions and Results in Agriculture Exports at Dawn ExpoUSAID Interventions and Results in Agriculture Exports at Dawn Expo
USAID Interventions and Results in Agriculture Exports at Dawn Expo
 
Business plan of jermyn street school
Business plan of jermyn street schoolBusiness plan of jermyn street school
Business plan of jermyn street school
 

Similaire à 手把手教你玩转Gdb

Gdb实用技巧
Gdb实用技巧Gdb实用技巧
Gdb实用技巧xophiix
 
基于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
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹kao kuo-tung
 
Gdb principle
Gdb principleGdb principle
Gdb principlelibfetion
 
Git使用入门
Git使用入门Git使用入门
Git使用入门dpf2e
 
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
 
How to debug using GDB
How to debug using GDBHow to debug using GDB
How to debug using GDBPinkus Chang
 
在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMDYangHao Yuan
 
C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
Mongo简介
Mongo简介Mongo简介
Mongo简介wuda0112
 
mysql dbug
mysql dbugmysql dbug
mysql dbugTim Chou
 
GIT實務操作與理論
GIT實務操作與理論GIT實務操作與理論
GIT實務操作與理論鵬 大
 
Groovy Introduction for Java Programmer
Groovy Introduction for Java ProgrammerGroovy Introduction for Java Programmer
Groovy Introduction for Java ProgrammerLi Ding
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Wei-Yu Chen
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式Stanley Ho
 

Similaire à 手把手教你玩转Gdb (20)

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)
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹
 
Gdb principle
Gdb principleGdb principle
Gdb principle
 
Git使用入门
Git使用入门Git使用入门
Git使用入门
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
 
How to debug using GDB
How to debug using GDBHow to debug using GDB
How to debug using GDB
 
在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD在 golang 中透過組合語言實作 SIMD
在 golang 中透過組合語言實作 SIMD
 
C++工程实践
C++工程实践C++工程实践
C++工程实践
 
Mongo简介
Mongo简介Mongo简介
Mongo简介
 
Git入門介紹
Git入門介紹Git入門介紹
Git入門介紹
 
mysql dbug
mysql dbugmysql dbug
mysql dbug
 
Lvm 解析
Lvm 解析Lvm 解析
Lvm 解析
 
Git Branch Practice
Git Branch PracticeGit Branch Practice
Git Branch Practice
 
GIT實務操作與理論
GIT實務操作與理論GIT實務操作與理論
GIT實務操作與理論
 
Groovy Introduction for Java Programmer
Groovy Introduction for Java ProgrammerGroovy Introduction for Java Programmer
Groovy Introduction for Java Programmer
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 

手把手教你玩转Gdb

Notes de l'éditeur

  1. 在 64bits 的机器上,以 cat /proc/xxx/maps 所对应的为准!
  2. 未决的断点常见的是动态库中的
  3. 单步调试一节做快速简单介绍即可,大家对这一块相对比较熟悉
  4. 举例说明所有的打印属性
  5. 先介绍 stack frame 的概念 然后看图给大家一个直观影响 接下来再开始讲具体的命令
  6. 在程序当前执行到的那一桢, PC 不会被显示
  7. 先看例子,再抛出问题,然后带着问题讲下面的内容
  8. 缺省编辑器是 /bin/ex, linux 下没有安装