GDB 、 LINUX 下 GDB 调试 小结---->基础知识!

//!> 注意:binary 是 gdb_
//!> 注意:()里面也是可以的 
   
//!> 应用最频繁的     

0.            -g                                        //!>编译加上-g可以将代码编入,否则有些指令无效     
1.             file       gdb_                  //!> 将binary导入
2.            l( list )                              //!> 显示代码段
                                                                  //!> 注意前提是将代码编译进去,也就是编译是加上-g
3.            r( run )                              //!> run
4.            c( continue )                //!> 继续run直到下一个断点处
5.                                                      //!> 增加断点,后面参数是行数就可以了
                                                                  //!> 参数也可以是函数名称( 设置在第一个执行代码行处 )
6.            info break                      //!> 显示当前的断点信息                                               
7.            s( next )                          //!>从当前位置单步执行
8.            p( print )                    //!>显示n当前的值
9.            bt                                            //!> 查看函数堆栈
10.            finish                                //!> 退出函数
11.            help                                    //!> 注意第一次显示的仅仅是命令种类,要细察还要接着对每项
                                                                    //!> 查询           
12.            set args XXXXXX      ...      //!> 当函数代参执行即run之前可以写入参数
13.            show args                    //!> 显示参数
14.            q( quit )                          //!> 退出
15.            cd                                      //!>与shell的cd是一样的
16.            pwd                                  //!> 显示当前工作目录
17.            u( until )                        //!> 单步时跳过一个循环体
18.            si或ni                              //!> 单步跟踪机器指令!!!

>:      修改变量值和命名问题
      >: print x =9                            //!> 修改x的值为9
      >: if 某个变量与GDB的命令重名,我们要使用var
          例如:有一个width变量,现在设置值
          一般 set width= 47就好,但是不对,
          但是setwidth是GDB命令,所以报错,
          此时处理:set varwidth = 47就可以!

>:      跳转执行:GDB 可以修改程序的执行顺序
      jump<line>:跳到某行
      jump<addr>:跳到addr地址处
     
>:      强制函数返回
      如果你的调试断点在某个函数中,并还有语句没有执行完。你可以使用 return命令强制函
      数忽略还没有执行的语句并返回。
      return
      return<exp>
     
>:      强制调用函数
      call<exp>
     
>:       暂停/恢复程序运行
      >: 暂停:
      断点(breakpoint):前面说过
      观 察点(watchpoint)
      捕捉点(catchpoint)
      信 号 (signals)
      线程停止(threadstops)
     
      >: 恢复:
      如果要恢复程序运行,可以使用 c 或者 continue 命令。
      也可以用s( step)或者n( next )执行单步!
     
>:       运行环境:
      path<dir>:可以自己设置程序运行路径
      showpaths:查看运行路径
      setenvironment( env ) varname[=value]:设置环境变量,例如:set envUSER=hchen
      showenvironment( env ) [varname]:查看环境变量,例如:show env USER

>:      程序的输入输出
      infoterminal 显示程序用到的终端的模式使用重定向空值程序输出。如 run>outfile
      tty命令可以指定写输入输出的终端设备。如 tty /dev/ttyb


>:      启动 GDB 的方法有以下几种:
      1、 gdb<program>
            program 也就是你的执行文件,一般在当前目录下。
      2、 gdb<program> core
            用 gdb 同时调试一个运行程序和 core 文件,core 是程序非法执行后 core dump后
            产生的文件。
      3、 gdb<program><PID>
            如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程 ID。gdb
            会自动 attach 上去,并调试它。program 应该在 PATH环境变量中搜索到。

>:      注意:
            敲入 命令第一个字母, 按两次 TAB 键,你会看到所有 此字母 开头的命令:

>:       当我们需要某个函数增加断点时候,但是不知道函数的全拼,只知道前面几个字母,那么
      就可以执行:b  fu<TAB><TAB>就可以查看到了( 此处以fn开头的函数 )

>:      当然在GDB中也可以运行shell命令:shell<cmd>

>:      可以在GDB中make重新编译改过的代码!:make<-args>

>:      关于list指令
      list:显示当前行后面的源程序
      list-:显示当前行前面的源程序
      list<line>:显示第几行的源程序
      list<fun>:显示函数fun的源程序
     
>:      十、 查看寄存器
      要查看寄存器的值,很简单,可以使用如下命令:
      inforegisters:
                              查看寄存器的情况(除了浮点寄存器)。
      infoall-registers:
                              查看所有寄存器的情况(包括浮点寄存器)。
      inforegisters<regname...>:
                              查看所有指定的寄存器的情况。
      寄存器中放置了程序运行时的数据,比如程序当前运行的指令地址(ip),程序的当前堆栈地址
      (sp)等等。你同样可以使用 print命令来访问寄存器的情况,只需要在寄存器名字前加一个
      $符号就可以来看。如:p$eip。
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值