Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3471712
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2010-09-02 14:41:48

一、初级
(一)编译时的要求
   1. 程序编译时必须加入 -g 参数进行编译。
   2. 如果想查看宏的内容,需要在编译时加入 -gdwarf-2 -g3

(二)进入调式模式
   1. gdb 程序名
   2. gdb 程序名 *.core
   3. gdb 程序名 进程号 或 gdb 程序名 ->  attatch 进程号

(三)打印变量信息
   1. p 变量名
   2. p *数组变量量@长度
   3. p *结构变量地址

   4. p/x 以十六进制打印数据

   5. x/16 内存地址 以十六进制打印内存

   6. info locals 查看本地变量

   7. 打印字符数组的全部内容
       ·set print elements 0
·print var

(四)断点相关
   1. b 函数名
   2. b 行数
   3. b 文件名:函数名

   4. info b 查看所有断点
 
   5. d 断点号 删除断点

   6. 根据条件设置断点
      break 313 if !strcmp(name->data, "http")//在 313 行设置断点

(五)查看堆栈信息
   1. bt

(六)查看当前代码
   1. l
   2. 设置代码的列的长度 set listsize 30

(七)结束函数
   1. finish

(八)在GDB中给程序设置argv参数
   1. set args 参数

(九) 运行
   1. run
   2. run 参数

(十)设置源码目录
   1. dir $cdir:$cwd:源码路径

(十一)线程相关
   1. i threads //查看用到的线程
   2. thread 线程号 break 行号 //在指定线程处设置断点
   3. thread 线程号 //切换到指定线程

(十二)查看寄存器
   1. info registers  显示所有寄存器内容
   2. info registers 寄存器 显示某个寄存器的内容

(十三)结束循环
   1. u

(十四)当变量发生变化时打印出变量值
   1. display 变量值
   2. d display 号 //删除观查的变量

(十五)反汇编
   1. disasse

二、高级
1. 通过对象元素,查看对象内容
struct AA 为结构体
p *(struct AA *) ((unsigned int )&对象元素 - (unsigned int )(&((struct AA *)0)->结构元素))


阅读(1198) | 评论(0) | 转发(0) |
0

上一篇:nginx epoll 结构图

下一篇:CST时区问题

给主人留下些什么吧!~~