GDB 使用入门

来源:互联网 发布:自学cg插画知乎 编辑:程序博客网 时间:2024/05/29 08:45

一、gdb 常用命令 

命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)列出源代码,接着上次的位置往下列,每次列10行list 行号列出从第几行开始的源代码list 函数名列出某个函数的源代码next(或n)执行下一行语句print(或p)打印表达式的值,通过表达式可以修改变量的值或者调用函数quit(或q)退出gdb调试环境set var修改变量的值start开始执行程序,停在main函数第一行语句前面等待命令step(或s)执行下一行语句,如果有函数调用则进入到函数中

二、应用示列
1、gdb 调试带参数的程序 
gdb main
(gdb) set args arg1 arg2 arg3            // 相当于./main arg1 arg2 arg3
(gdb) r            <--------------------- 运行程序,run命令简写
show args 命令可以查看设置好的运行参数。

2、设置断点:

break 可带如下参数:

linenum                 本地行号,即list命令可见的行号

filename:linenum  制定个文件的行号

function                函数,可以是自定义函数也可是库函数,如open

filename:function  制定文件中的函数

condtion                条件

(gdb) break 16    // 设置断点,在源程序第16行处。
(gdb) break func  // 设置断点,在函数func()入口处。
(gdb) info break  // 查看断点信息。
break test.c:10
break test.c:main
break 10 if index == 3                // 条件断点

3、调试步命令:
(gdb) start      // 开始执行程序,停在main函数第一行语句前面等待命令
(gdb) n          // 单条语句执行,next命令简写。
(gdb) c          // 继续运行程序,continue命令简写。
(gdb) s         // 执行下一行语句,如果有函数调用则进入到函数中
(gdb) finish    // 退出函数。

4、输出信息:
(gdb) p i        // 打印变量i的值,print命令简写。
(gdb) bt        // 查看函数堆栈。


0 0
原创粉丝点击