栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ZUCC

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ZUCC

实验目的:
  1. 熟悉Linux操作系统环境;
  2. 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。
  3. 掌握GCC在Linux 环境下编写C语言程序命令和步骤;
  4. 掌握GDB调试C语言程序命令和步骤。
实验内容:
  1. 使用文本编辑器编写hello源代码;
  2. 使用GCC编译器,逐步编译hello 程序,观察中间文件。
  3. 使用文本编辑器编写 tst.c源程序;
  4. 使用GDB调试 tst程序,掌握常用调试命令。
实验步骤: 1、 使用文本编辑器编写hello 程序源码,截图展示。

2、 根据实验讲义,使用不同的命令选项,输出 hello 编译过程中间文件,截图展示。 ①预处理生成hello.i

②编译生成hello.s

③汇编生成hello.o

未安装相应的软件故无法打开

④链接生成hello

3、使用Editplus或者其他合适的软件,查看hello.i,hello.s,hello.o hello 文件内容,截图展示。 ①hello.i

②hello.s

③hello.o

④hello

4、使用文本编辑器编写实验讲义中给出的 tst.c 源码,截图展示。

5、根据实验讲义步骤,学习逐步调试 tst程序,掌握 GDB 常用命令,截图展示。 准备启动gdb

gdb l

从第一行开始列出源码

gdb

直接回车表示重复

gdb break 16

在16行设置断点

gdb r

run命令简写

gdb n

next简写,单条执行命令

gdb c

continue简写,继续运行

gdb p i

打印 i 的值

gdb bt

backtrace,查看函数的调用的栈帧和层级关系

gdb finish

退出函数

gdb g

退出

6、结合实验操作以及GDB的help,了解以下命令的作用。
命令作用
gdb直接回车表示重复
list查看原代码,简写l
run重新开始运行文件
break设置断点
print打印值及地址,简写p
continue继续运行,简写c
next单步调试(逐过程,函数直接执行),简写n
step单步调试(逐语句:跳入自定义函数内部执行),简写s
info查看函数内部局部变量的数值,简写i
finish结束当前函数,返回到函数调用点
quit退出gdb,简写q
help查看gdb所有内部命令及使用说明
思考题: 1、分析同一个源程序在不同机器上生成的可执行目标代码是否相同。提示∶从多个方面(如ISA、OS和编译器)来分析。

不相同。本质上来说,机器语言是CPU可以所执行的语言,是与其特殊的架构相契合的。不同的机器可能使用不同架构的CPU,因此生成的可执行文件目标代码也不相同。同时,在形成汇编语言的时候也会受到编译器、操作系统、ISA等影响。

2、你能在可执行目标文件中找出函数 printf 对应的机器代码段吗?能的话,请标示出来。

可以。先编写特定的.c文件

再编译,并以16进制查看

查找特定字符从而确定printf

3、为什么源程序文件的内容和可执行目标文件的内容完全不同?

源文件多数使用人可以理解的“高级语言”组成的,但要使机器能够执行就必须转化为机器语言,而可执行文件正是机器语言的载体,它由机器语言组成,使用内容完全不一样。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号