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()
  • 相关文章

    目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
    原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
    电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
    参见:https://blog.csdn.net/weixin_38883338/article/deta...
    Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
    介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...