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. -->切到gdb窗口
  3. - -->减小vi窗口
  4. = -->增大vi窗口
  5.  shift - -->减小很多vi窗口
  6.  shift = -->增大很多vi窗口
b.断点
空格添加/删除断点
c.  gdbinit脚本不能用
  1. warning: File "/work/ffmpeg/jpeg/jpegc/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
  2. To enable execution of this file add   add-auto-load-safe-path /work/ffmpeg/jpeg/jpegc/.gdbinit   line to your configuration file "/home/cong/.gdbinit".
  3. To completely disable this security protection add    set auto-load safe-path /    line to your configuration file "/home/cong/.gdbinit".
  4. For more information about this security protection see the  "Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
  5.         info "(gdb)Auto-loading safe path"
临时的方法: 在gdb的命令行里面  source .gdbinit
永久的方法: cong@msi:~$ cat .gdbinit 
set auto-load safe-path /
二. gdb的使用
1. 断点
a. 在指定文件中指定函数处设断点
  1. <filename>: <func_name>
  2. <filename>: <line_num>   --> 例: break mm/slab.c:673
2. 打印
2.1 
{i,j,k,l}            -->打印多个变量
display {i,j,k,l}   --> 每执行一次都打印这几个变量
undisplay           --> 去掉display

3.2 打印某个地址处的数据
  1. (gdb) help x
  2. Examine memory: x/FMT ADDRESS.
  3. ADDRESS is an expression for the memory address to examine.
  4. FMT is a repeat count followed by a format letter and a size letter-->显示格式用两部分表示
  5. Format letters are:                     -->格式类型 
  6.     o(octal), 
  7.     x(hex), 
  8.     d(decimal), 
  9.     u(unsigned decimal),
  10.     t(binary), 
  11.     f(float), 
  12.     a(address), 
  13.     i(instruction), 
  14.     c(char), 
  15.     s(string)
  16.     z(hex, zero padded on the left).
  17. Size letters are:                        -->长度类型 
  18.     b(byte), 
  19.     h(halfword), 
  20.     w(word), 
  21.     g(giant, 8 bytes).
  22. The specified number of objects of the specified size are printed
  23. according to the 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汇编级调试
  1. (gdb) display /5i $pc                  -->pc是gdb的一个内部变量,打印当前的5条汇编指令
  2. 1: x/5i $pc
  3. => 0x1111dc <system_call>:    push %eax
  4.    0x1111dd <system_call+1>:    cld 
  5.    0x1111de <system_call+2>:    push %gs
  6.    0x1111e0 <system_call+4>:    push %fs
  7.    0x1111e2 <system_call+6>:    push %es
  8. (gdb) ni                              --> ni(nexti) 或si(stepi)进行汇编指令级调试
  9. 0x001111dd in system_call ()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值