雅乐网

计算机技术、学习成长

编程 » C/C++ » gdb调试新手入门(一)

gdb调试新手入门(一)

GDB是一个命令行下的调试工具,他非常强大 有着一些图形界面调试程序没有的功能。下面雅乐网为大家介绍一下gdb调试程序的基本用法。

环境安装

windows环境下安装gdb,可以参考sublime text 3配置c/c++编译环境,将mingw添加到系统环境变量即可。

单步调试

下面雅乐网以一个例子为例给大家介绍一下gdb的基本命令和用法。首先我们新建一个c文件

要想用gdb进行调试,在编译的时候就要加上-g选项 这个可以把编译调试的信息加到可执行文件中,方便调试。如果没有-g选项,调试的时候就没有相应的变量名和内存地址的对应信息。

因此 我们来到该目录下 编译

搜狗截图20140813135005

可以看到生成了一个main.exe文件

使用命令 gdb 文件名 可以调试该执行文件

搜狗截图20140813135114

(gdb)就表示现在进入了gdb的命令界面,可以使用gdb的一些命令了。

查看源代码 list命令 简写l

搜狗截图20140813135245

默认每次查看10行。直接按回车 可以重复上次的命令。

开始执行 start命令

搜狗截图20140813135533

start命令开始执行程序 程序将停在变量声明后的第一条语句的地方

单步执行 next 简写n

执行n命令可以执行下一步,如果包含函数将直接跳过 而不进入函数内部 相当于图形界面下的step over

搜狗截图20140813140555

step into命令 step简写s

s命令可以进入到函数内部

搜狗截图20140813140702

backtrace命令(简写为bt)可以查看函数调用的栈帧

搜狗截图20140813141201

可见当前函数cal_sum是被main函数调用 传递的参数是 a=1 b=10

查看变量值 info 简写i

使用i locals可以查看当前栈的局部变量

搜狗截图20140813141059

 

也可以查看main函数的局部变量 先用frame命令(简写为f)选择1号栈帧然后再查看局部变量:先用frame命令(简写为f)选择1号栈帧然后再查看局部变量:

搜狗截图20140813141440

print命令(简写为p)打印出变量的值:

搜狗截图20140813141611

使用finish命令跳出函数

搜狗截图20140813141702

使用p命令查看变量

搜狗截图20140813141840

 

总结

命令 描述
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) 执行下一行语句,如果有函数调用则进入到函数中

 

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/gdb-2.html

上一篇:

下一篇:

我要评论

验证码*: 2 + 2 =