微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cgdb---ubuntu14.04下安装cgdb及gdb的使用

一. ubuntu 14.04 下安装cgdb
1.ubuntun14.04下安装cgdb
cong@msi:~$ sudo apt-get install cgdb
2. 使用:cgdb ./hello就可以了
a. cgdb分为上面的vi窗口与下面的gdb窗口
  1. ESC->切到vi窗口
  2. i>切到gdb窗口
  3. >减小vi窗口
  4. =>增大vi窗口
  5. shift>减小很多vi窗口
  6. shift>增大很多vi窗口
b.断点
空格添加/删除断点
c. gdbinit脚本不能用
  • warning:File"/work/ffmpeg/jpeg/jpegc/.gdbinit"auto-loading has been declined by your `auto-load safe-path'setto"$debugdir:$datadir/auto-load".
  • Toenable execution of this file addadd-autoloadsafepath/workffmpegjpegjpegc/.gdbinitlinetoyour configuration file"/home/cong/.gdbinit"Tocompletely disable this security protection add setload safe/ lineFormore information about this security protection see the "Auto-loading safe path"sectioninthe GDB manual.E.g.,run from the shell:
  • info"(gdb)Auto-loading safe path"
  • 临时的方法:在gdb的命令行里面 source .gdbinit
    永久的方法:cong@msi:~$ cat .gdbinit
    set auto-load safe-path /
    二. gdb的使用
    1. 断点
    a. 在指定文件中指定函数处设断点
    b<filename>:<func_name>
  • b<line_num> --> 例:break mm/slab.c:673
  • 2. 打印
    2.1
    p {i,j,k,l} -->打印多个变量
    display {i,l} --> 每执行一次都打印这几个变量
    undisplay --> 去掉display

    3.2 打印某个地址处的数据
    (gdb)help x
  • examine memory:x/FMT ADDRESS.
  • ADDRESSisan expressionforthe memory addresstoexamine.
  • FMTisa repeat count followed by a format letteranda size letter.-->显示格式用两部分表示
  • Format letters are: -->格式类型
  • o(octal),
  • x(hex
  • d(decimal
  • u(unsigned decimal
  • t(binary
  • f(float
  • a(address
  • i(instruction
  • c(char
  • sstring)
  • zontheleft.
  • Size letters are: -->长度类型
  • b(byte
  • h(halfword
  • w(word
  • g(giant.
  • The specified number of objects of the specified size are printed
  • accordingtothe format.
  • 例如要按16进制显示类型为short的inode->i_zone
    (gdb) x /20xh inode->i_zone
    0x2cb92 : 0xbbc7 0xbbc8 0xbbc9 0xbbca 0xbbcb 0xbbcc 0xbbcd 0xbbce
    0x2cba2 : 0x0000 0x0000 0x0000 0x0000 0x0000 0x0b6b 0x9bdc 0x0000
    0x2cbb2 : 0x0000 0x0301 0x0931 0x0001

    注: 要用display自动显示--> display /40wx 0xc0101f80

    2.3 gdb汇编级调试
    )display/5i $pc -->pc是gdb的一个内部变量,打印当前的5条汇编指令
  • 1/5i $pc
  • >0x1111dc<system_call:push%eax
  • 0x1111dd+1:cld
  • 0x1111de+2%gs
  • 0x1111e0+4%fs
  • 0x1111e2+6%es
  • )ni --> ni(nexti) 或si(stepi)进行汇编指令级调试
  • 0x001111ddinsystem_call()
  • 原文地址:https://www.jb51.cc/ubuntu/355731.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐