lab4-gcc&gdb
一、实验目标
学习使用gcc&gdb的一些基本操作
二、实验内容&实验步骤
一、使用 C 语言编写以下程序并按要求完成实验,实验每一步均需要截图: 使用递归的方法计算 1+2+…+n(n<=1000)的和,若输入的 n 不是正整数则返 回 0,若 n 超出取值范围返回-1。
-
将该程序保存,文件名为 lab4.c
打开虚拟机终端,切换到你想要保存代码的目录。你可以使用
cd
命令来切换目录cd ~/Documents/Coding
创建一个新文件并打开它以编辑,使用文本编辑器
nano
来创建文件nano lab4.c
在
nano
中,按Ctrl + O
,然后按Enter
来保存文件在
nano
中,按Ctrl + X
,退出文本编辑器 -
使用 gcc 编译该程序(两种方法),最终的可执行文件名为 lab,要求生成 所有警告信息
gcc -Wall -o lab lab4.c
-
仿照课上的例子定义宏,练习使用-D 参数
#define MY_MACRO
)
在编译时使用-D参数启用宏
-
删除刚才定义的宏,重新编译,并开启 PIE,强度为 1
gcc -Wall -o lab lab4.c -fPIE -pie
)
-
练习使用 gdb 的常用命令调试该程序,需要练习的命令至少包括运行、退出、 查看本程序代码、设置断点、删除断点、设置断点状态、打印变量、单步调 试、栈操作、显示断点、显示寄存器信息、显示栈帧、显示参数和局部变量、 打印栈帧、以某种格式打印某一地址处开始的 N 个长度单元为 U 的内存值。
-
启动GDB:
gdb ./lab
-
运行程序:
run
的和,若输入的 n 不是正整数则返 回 0,若 n 超出取值范围返回-1。
-
将该程序保存,文件名为 lab4.c
-
使用 gcc 编译该程序(两种方法),最终的可执行文件名为 lab,要求生成 所有警告信息
-
仿照课上的例子定义宏,练习使用-D 参数
-
删除刚才定义的宏,重新编译,并开启 PIE,强度为 1
-
练习使用 gdb 的常用命令调试该程序,需要练习的命令至少包括运行、退出、 查看本程序代码、设置断点、删除断点、设置断点状态、打印变量、单步调 试、栈操作、显示断点、显示寄存器信息、显示栈帧、显示参数和局部变量、 打印栈帧、以某种格式打印某一地址处开始的 N 个长度单元为 U 的内存值。
注:具体操作自定但要包括需要练习到的内容,对于一些命令,尽可能解释 各字段含义,如 info frame 命令。
二、自行了解 Makefile 相关内容,并编写 Makefile 文件,并写一个 Makefile 的 QuickStart,附上截图和文字说明。
注意:请不要直接复制、粘贴,尝试用自己的语言进行叙述
四、实验总结
本次实验涵盖了C语言、编译、宏定义以及调试的多个方面。通过编写C程序并使用GCC进行编译,学会了如何生成可执行文件以及处理警告信息。宏定义的练习有助于理解条件编译的概念,通过GDB的调试练习,掌握了基本的调试技巧,包括断点设置、变量查看、单步调试等。学习Makefile文件用于编译和构建一个简单的C程序,以及清理项目。
注:具体操作自定但要包括需要练习到的内容,对于一些命令,尽可能解释 各字段含义,如 info frame 命令。
二、自行了解 Makefile 相关内容,并编写 Makefile 文件,并写一个 Makefile 的 QuickStart,附上截图和文字说明。
注意:请不要直接复制、粘贴,尝试用自己的语言进行叙述
四、实验总结
本次实验涵盖了C语言、编译、宏定义以及调试的多个方面。通过编写C程序并使用GCC进行编译,学会了如何生成可执行文件以及处理警告信息。宏定义的练习有助于理解条件编译的概念,通过GDB的调试练习,掌握了基本的调试技巧,包括断点设置、变量查看、单步调试等。学习Makefile文件用于编译和构建一个简单的C程序,以及清理项目。