GDB进阶命令

来源:互联网 发布:php邮件系统 编辑:程序博客网 时间:2024/06/14 10:50

GDB详细命令列表可参考:http://www.zeuux.org/science/learning-gdb.cn.html

 

 

1,

where : 输出堆栈中跟踪的函数调用记录.

bt : backtrace,同上.

 

backtrace full

bt full

bt full n

bt full -n

    也打印本地变量。n是要打印的帧的数量,如上所述。

 

 

2,

frame  <number>: 检查某一特定帖(一帖为一个函数调用).


    frame  n
        n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。
    
    up 
        表示向栈的上面移动n层,可以不打n,表示向上移动一层。 
        
    down  
        表示向栈的下面移动n层,可以不打n,表示向下移动一层。 

 

info frame  打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内内地址

 

 

     info args
        打印出当前函数的参数名及其值。
     
     info locals
        打印出当前函数中所有局部变量及其值。
        
     info catch
        打印出当前的函数中的异常处理信息。

3,

finish : 当用step命令进入函数内部后,用finish命令来执行程序直到从当前函数返回.

4,

用枚举代替宏定义: 便于调试时检查变量值的含义.

5,

watch <…>: 设置观察点.

6,

gdb不能单步调试if,while语句的多个条件函数.所以必要时要重写代码.

也可在被调函数内设置断点来检查其值,但只能查看而不能记录其值.

7,

调试工具: valgrind等.

8,

<<debugging>> , David J.Agans.

 

 

info break     查看断点

print x=1 修改变量x的值

set args 。。。  指定参数: 

show args  


display设置自动显示的变量


delete删除断点


frame或f 查看当前栈层的信息  

info frame或info f   这个命令会打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内存地址。比如函数的地址,调用函数的地址,被调用函数的地址,目前的函数是由什么样的程序语言写成的、函数参数地址及值,局部变量的地址等等




path 《dir》: 设定程序运行路径  

show 《dir》:查看路径  

set environment varname[=value]:设置环境变量。如set env USER=hchen  

show environment[varname]: 查看环境变量  

info terminal: 显示程序用到的终端的模式  

run>outfile: 重定向输出  

tty /dev/ttyb:指定输入输出的终端设备 

 

 

 

原创粉丝点击