命令行中使用gcc编译器和gdb调试

本文介绍了在命令行中使用GCC编译器和GDB调试器的基础操作。包括常见编译选项,如-DDEBUG和-O1,-O2,-O3,以及GDB的初步使用,如设置断点、运行程序、查看源代码和打印变量值。通过实例展示了如何逐句调试,如何使用gdb命令简写,并提供了退出GDB的方法。" 125195610,7391752,MATLAB实现:离散Hopfield神经网络的数字识别,"['MATLAB', '神经网络', 'HNN', '联想记忆', '数字识别']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先在命令行中输入g++看看有没有反应,没有就百度一下如何添加。

常见编译选项

gcc test.c//编译为a.exe文件
gcc test.c -o test //编译为test.exe文件
gcc test.c -o test -Wall -ansi -pedantic //编译并检查错误(一般wall即可)
gcc test.c -o test -lm //链接数学库(C++不用)

还有一些编译选项
比如-DDEBUG,可以编译程序中

#ifdef DEBUG

#endif

的部分。
-O1,-O2,-O3为编译器自动对代码进行优化。

gdb初探

使用方法:用gcc编译时,加上-g选项,然后 输入
注意:在gdb中逐句调试时,显示的语句是下一步将要运行的语句(目前尚未运行)

gdb test.exe

gdb常见命令

查看帮助/查看某一命令帮助

help
help xxx

查看程序源代码某一行

list 15
l 15
li 15
lis 15

如上,gdb命令可以简写,前几个字母就可以。不过为了方便记忆,还是建议用完整的命令

运行程序

run test.exe

设置断点和继续运行

break main
break 14 
continue

如上,设置断点可以写函数名称或者函数,然后用run命令到了断点就会停下来。用continue命令就能继续。

删除/临时禁止/恢复/全部断点 删除某一行断点

delete break
disable break
enable break
clear 15

逐句运行

step
next

方法:首先设置断点,然后运行,在断点处停止后,调用这两句。区别是:如果当前行涉及函数调用,next会将其作为一个整体执行完毕,而step是进入函数内部。
另外,在gdb中,如果直接按Enter键,等价于再次执行上一条命令。所以之后只要不停按Enter就好了。

在程序中运行到指定行

until 15

注意使用这条语句和上面一样,是要运行了程序而且停止在断点处才可以使用。

gdb具体应用之打印变量值

打印当前某一变量值

print i

显示目前所有局部变量的值

info locals

之后每一行运行都打印该变量的值

display x
display x+1

列出当前所有正在display的变量

info display

**
退出gdb

quit

还有很多高级功能,先不学习了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值