【无标题】

本文详细介绍了如何使用GCC进行预处理、编译、汇编和链接,以及如何通过GDB进行程序调试,包括设置断点、运行程序和查看代码。此外,还讲解了如何利用Makefile自动化编译过程,并演示了远程调试的配置和步骤。对于软件开发者来说,这是理解编译过程和调试技巧的重要实践。
摘要由CSDN通过智能技术生成

编写程序如下图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_9,color_FFFFFF,t_70,g_se,x_16

 按esc退出编辑并:wq保存并退出

gcc指令作用

按步骤输入以下指令

1.使用gcc -E hello.c -o hello.i对hello.c进行预处理得到hello.i

2.编译

使用gcc -S hello.i -o hello.s对hello.i进行编译得到hello.s

3编译、汇编

使用gcc -c hello.s -o hello.o对hello.s进行编译汇编得到hello.o

4链接

使用gcc hello.o -o hello对hello.o进行链接确定输出文件名

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_20,color_FFFFFF,t_70,g_se,x_16

 运行hello程序

使用./hello来运行程序

9b607f890e3f444a91c975436e91b492.png

 gdb调试

检查系统是否安装了gdbgdb -v

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_20,color_FFFFFF,t_70,g_se,x_16

若没安装则安装gdbsudo apt install gdb

使用gdb进行调试

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_18,color_FFFFFF,t_70,g_se,x_16

 列出程序

使用list(l)即可列出所调试程序的代码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_20,color_FFFFFF,t_70,g_se,x_16

 设置断点

使用break(b) 函数名或break(b) 行数对程序增设断点

使用into(i) break(b)列出所有的断点

使用delete(d) 断点编号删除断点

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_14,color_FFFFFF,t_70,g_se,x_16

 运行程序

使用run(r)运行程序

使用next(n)单步运行并且不进入子函数

使用step(s)单步运行并进入子函数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_10,color_FFFFFF,t_70,g_se,x_16

 使用quit(q)退出gdb调试

使用makefile对hello.c进行编译

查看makefile是否安装make -v

​​​​​​​

 若没有安装则进行安装sudo apt install make

编辑及使用makefile

使用vim对makefile进行编辑vim makefile如下

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_11,color_FFFFFF,t_70,g_se,x_16

 运行makefilemake

 使用gdb远程调试

安装gdbserver

在想要进行远程调试的目标计算机上安装gdbserversudo apt install gdbserver

开放远程端口

在目标机上开放远程调试端口gdbserver 目标ip:(选择一个未被占用的端口) 远程调

 进行调试

连接成功后可正常在客户端进行调试,运行结束后会在目标端显示运行结果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_7,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjAwNDMyNTc=,size_13,color_FFFFFF,t_70,g_se,x_16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值