使用gcc编译gdb调试
gcc
在linux系统中,默认是没有安装gcc编译器的,可以通过命令
rpm -q | grep gcc
来查看。安装命令为:
yum -y install gcc
安装后,编写一个.c结尾的文件。
gcc test.c
就会默认输出一个a.out的输出文件,这个输出文件就是可执行文件。
如果加上-o选项,则可以自定目标文件。
gcc -o test test.c
test就是它的可执行文件。
一般都默认加上-Wall 选项,可以自动提示一些出错警告的信息。
gcc -Wall -o test test.c
gbd
以上就是常用的gcc相关知识了。下面就是它的调试,调试通常使用gdb。在编译的时候需要加上选项-ggdb3选项
gcc -ggdb3 -Wall -o test test.c
这样在没有出错的情况下
gdb test
就进入调试窗口
输入下面命令可以进行如下的操作:
break 设置断点
break 21 在第21行设置断点
break main 在main函数处设置断点
break test 在函数test处设置断点
step / s 下一步,直接执行下一条程序
continue / cont 下一段,如果遇到函数,不会进入函数,逐过程,有点类似VS里面的F10
run 运行
finish 结束调试
tbreak设置临时断点
print / p 显示某个变量的值
p *array@len 输出数组
p i 输出i的值
enable 恢复失效的断点
disable 使断点失效
clear 清除断点
backtrace / bt 查看堆栈信息
相关的输出格式
x 十六进制格式
d 十进制格式
u 十六进制无符号
o 八进制显示
t 二进制显示
a 十六进制显示
c 字符格式显示
f 浮点数格式显示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?