Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117583
  • 博文数量: 26
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 122
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-11 10:02
个人简介

分享是一种快乐!

文章分类

全部博文(26)

文章存档

2014年(11)

2013年(15)

我的朋友

分类: LINUX

2013-11-13 10:50:49

原文地址:Linux程序调试 作者:Guobutter

1 查看可执行文件是否含有可调试信息:
    readelf    -S    filename | grep debug
or
    nm -a filename | grep debug
or
   readelf --debug-dump   

2 GDB 条件断点
    b    point/function if cond        //cond不能用()包围
    eg:    b 11 if i == 50    //i == 50时,在11行停住
    eg:    b 11 if strcmp(var, "aaa") == 0    //字符串变量为“aaa”时,

3 GDB 修改断点条件
    condition            //修改断点号为bnum的停止条件
    condition                //清除断点号为bnum的停止条件

4 GDB线程  
    set    scheduler-locking on
    info    threads
    t(thread)        //线程
    bt            //堆栈信息

5 对文件设置断点
   b    filename : rowNum    //在文件filenamerowNum行设置断点

6 GDB
进程
    attach    pid

7 GDB 设置环境变量
    set environment XXXX=xxxxxxx    //GDB中使用程序中要用到的环境变量

8 GDB 操作
    a. 打印:p/x    var    //十六进制显示。o: 八进制    t: 二进制    c: 字符    f: 浮点
    b. list -   //显示当前行前面的源程序
    c. watch         //表达式的值是否有变化,变化则停住
    d. rwatch        //expr被读时,停住
    e. awatch        //expr被读/写时停住
    f. 查看内存地址的值:examine
            eg:   x/        //n: 显示内存长度,f: 显示格式,u: 单位(b单字节, h双字节,w四字节,g八字节)
    g. 反汇编:disassemble    func
    h. 查看变量类型:whatis    var
阅读(1454) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~