微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux下C编程基础之:gdb调试器

Linux下C编程基础之:gdb调试器

时间:08-13 来源:3721RD 点击:

可以看到,该例中在第8行(也就是运行完第7行的for循环)设置了一个"i==0"的条件断点,在程序运行之后可以看出,程序确实在i为10时暂停运行。

3.gdb中源码查看相关命令

在gdb中可以查看源码以方便其他操作,它的常见相关命令如表3.13所示。

表3.13 gdb源码查看相关相关命令

命 令 格 式

含 义

list <行号>|<函数名>

查看指定位置代码

file [文件名]

加载指定文件

forward-search 正则表达式

源代码的前向搜索

reverse-search 正则表达式

源代码的后向搜索

dir DIR

将路径DIR添加到源文件搜索的路径的开头

show directories

显示源文件的当前搜索路径

info line

显示加载到gdb内存中的代码

4.gdb中查看运行数据相关命令

gdb中查看运行数据是指当程序处于"运行"或"暂停"状态时,可以查看的变量及表达式的信息,其常见命令如表3.14所示。

表3.14 gdb查看运行数据相关命令

命 令 格 式

含 义

print 表达式|变量

查看程序运行时对应表达式和变量的值

x <n/f/u>

查看内存变量内容。其中n为整数表示显示内存的长度,f表示显示的格式,u表示从当前地址往后请求显示的字节数

display 表达式

设定在单步运行或其他情况中,自动显示的对应表达式的内容

backtrace

查看当前栈的情况,即可以查到哪些被调用的函数尚未返回

5.gdb中修改运行参数相关命令

gdb还可以修改运行时的参数,并使该变量按照用户当前输入的值继续运行。它的设置方法为:在单步执行的过程中,键入命令"set 变量=设定值"。这样,在此之后,程序就会按照该设定的值运行了。下面,笔者结合上一节的代码将n的初始值设为4,其代码如下所示:

(gdb) b 7

Breakpoint 5 at 0x804847a: file test.c, line 7.

(gdb) r

Starting program: /home/yul/test

The sum of 1-m is 1275

Breakpoint 5, main () at test.c:7

7 for(i=1; i <= 50; i++)

(gdb) set n=4

(gdb) c

Continuing.

The sum of 1-50 is 1279

Program exited with code 031.

可以看到,最后的运行结果确实比之前的值大了4。

注意

gdb使用时的注意点:

· 在gcc编译选项中一定要加入"-g"。

· 只有在代码处于"运行"或"暂停"状态时才能查看变量值。

· 设置断点后程序在指定行之前停止。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top