博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux gdb的详细用法 运行与断点
阅读量:2382 次
发布时间:2019-05-10

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

gdb是调试程序,跟踪问题的一个非常好的手段,下面将详细的进行介绍它的具体用法

下面以gdb_test.c程序为例介绍

#include 
int func(){ int p = 0; int q = 0; for(p = 0; p < 5; p++) { q++; printf("p = %d\n", p); printf("q = %d\n", q); } return 0;} int main(){ int i = 1; i = i + 1; printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i); func(); i++; printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i); return 0;}

1, 首先介绍怎么用gdb运行程序

用gdb编译程序时,首先在编译程序时加-g。

以上面的程序为例进行编译

gcc gdb_test.c -o gdb_test -g

有两种运行用法,一是在编译成功后输入gdb + 编译后的文件名

 

二是在命令行中先输入gdb,按回车,再输入file + 编译后的文件

这两种方法选择其中一个就可以。

然后输入run命令就可以将程序运行起来了,简写 r

2 在程序中打断点

使用break进行打断点 ,简写为b

可以对某一行进行打断点 例:对程序的第三行进行打断点 b 3

如果是多个文件,可以对某个文件的某一行打断点, 例:对gdb_test.c的第三行打断点 b gdb_test.c:3 

可以对某个函数进行打断点 例:对本程序中func()函数打断点 b func

同理也可以对多个文件中的某一个文件的函数打断点,例: b gdb_test.c:func

例如对程序的第20行进行打断点 b 20

打完断点后,后显示一行内容,分别是第几个断点,在哪个文件中,第多少行

打完断点后进行运行程序,输入r命令

程序运行到第20行会自动停止,此时程序运行到了第19行,第20行还没有运行到。

我们可以先用p命令,打印一下程序中i的值,下面的博客会讲到p的用法

此时i的值为2.

如果想让程序继续运行,我们可以使用 c 命令

如果想退出程序,可以使用 q 命令。

 

如果我们想删除某个断点,有两种方法:

1 delete 命令 简写d

delete break 删除所有的断点

delete break n 删除某个断点 n为断点号

2 clear 命令

clear 行号    删除设在某一行的断点

 

这两种删除断点的用法就在于一个是依据断点号删除,一个是依据行号删除

 

disable break n  禁用某个断点 n为断点号

enable break n 使能某个断点 n为断点号

在第19行和第20行分别设置断点,然后运行程序。

程序在19行停住后,接下来进行对第20行的断点禁用

然后继续运行程序,你会看到在第20行没有停下来。所以说明禁用第20行的断点已经生效了。

 

查看断点信息:info b  查看所有断点信息

info b n  查看第n个断点的信息

此文章转载自:

你可能感兴趣的文章
WordPress:删除多说插件的版权信息
查看>>
查询表中两个条件下的数目,按三列组成表
查看>>
WinForm下禁止TextBox右键菜单
查看>>
C#_winform_DataGridView_的18种常见属性
查看>>
C# 扩展系统类string的方法
查看>>
webBrowser强制在本窗口打开,禁止在新窗口打开
查看>>
C#获取CPU序列号代码、硬盘ID、网卡硬件地址等类文件
查看>>
Html常用符号
查看>>
WinForm控制Webbrowser自动登录
查看>>
access表(.mdb文件) 导入 power designer
查看>>
PowerDesigner如何设计表之间的关联
查看>>
SQLite通用数据库类
查看>>
CMD下修改IP地址!
查看>>
安卓手机可以连上wifi但无法上网的解决办法
查看>>
C++程序员常用工具集
查看>>
在CSDN博客中添加量子恒道统计功能的做法
查看>>
C++调用IDL程序的做法(一)
查看>>
外部修改应用程序图标的做法
查看>>
database disk image is malformed解决方法
查看>>
VC常用代码之输出调用出错信息
查看>>