博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用gdb调试
阅读量:4686 次
发布时间:2019-06-09

本文共 1268 字,大约阅读时间需要 4 分钟。

  gdb GNU 发布的一个强大的程序调试工具,也是 Linux 程序员不可或缺的一大利器。

本章我们将给出 gdb 常用的命令的操作说明。

 

-----------------启动 gdb ------------------

使用 gdb 的前提:

$ gcc -g hello.c -o hello (编译的时候不要忘了-g参数)

启动 gdb 调试:

$ gdb hello

然后就可以进入命令行操作,和 Shell 一样,gdb 支持命令补全。输入几个字母,按 Tab 键,

gdb 会补全命令。按两次 Tab ,会提示所有可能的命令。
另外,其还支持命令缩写,如, h 代表 help 。

----------------常用命令如下:---------------

获取帮组命令 help

gdb 将命令分为 12 个大类,使用命令: “help 子类别”可以查看没类下面的详细帮助。
如: help breakpoints

设置断点

break 命令用于设置断点,命令接受行号或者函数名作为参数。 

break 也可设置条件断点:

如: break syaHello if count<1
使用 info break 可以查看断点
使用 clear 可以清除断点

运行程序和单步执行

设置完断点后,就可以运行调试程序了,使用 run 命令(缩写为 r)运行程序至断点。

此时,程序中断, gdb 等待用户发出下一步操作的指令。设用 next 命令(缩写为 n)单步执
行程序。也可以指定一个数字。下面这条命令让 gdb 连续执行两行,然后停下。

如果想继续运行,可以使用 continue 命令(缩写为 c )指导 gdb 继续运行程序,直至遇到下

一个断点。
如果想继续单步执行,可以继续使用 next,也是以使用 step (缩写为 s), step next 的最大
的区别在于, step 遇到函数是会进入到内部,而 next 不会进入内部
.

监视变量
调试程序最基本的需求就是监视变量的值,可以使用 print 命令(缩写为 p) 显示指定变量
的值。

如果要时刻监视某个变量的值,那么每次使用 print 就不方便。比较人性化的是,gdb 提供
watch 命令,用于设置另一种断点:“观察点”。
用法是: watch
变量名或表达式作为参数,一但值发生变化,就停下来。
临时修改变量
当某些特殊情况下,我们想让程序进入一些特殊的流程时, gdb 允许用户在程序运行时改变
变量的值,通过 set var 命令实现这一点。

 

 

查看堆栈情况

每次程序调用一个函数,函数的地址、参数、函数内部变量都会被压入“栈” (Stack) 中,
运行时堆栈信息对于程序员非常重要,使用 “bt”命令可以看到当前运行时栈的情况。

退出 gdb

调试完毕,使用 quit 命令(缩写为 q) 退出 gdb 程序。

转载于:https://www.cnblogs.com/wangkeqin/p/9165008.html

你可能感兴趣的文章
appium+python 环境搭建
查看>>
WampServer下修改和重置MySQL密码
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
Part2_lesson3---ARM寄存器详解
查看>>
深入理解vsto,开发word插件的利器
查看>>
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同!
查看>>
导入properties时的坑
查看>>
python——网络编程
查看>>
Spark的39个机器学习库
查看>>
Electron学习笔记(一)
查看>>
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
查看>>
配置NRPE的通讯
查看>>
VS2005编译VTK5.10.1
查看>>
shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言
查看>>
总结上海永辉云商高级前端职位面试题集
查看>>
中国计算机学会推荐国际学术会议和期刊目录
查看>>
各种可以远程
查看>>
分治法实现1-N的数字按字典序全排列组合 Java语言
查看>>
匹配两个空格之间的字符。。。
查看>>