3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx

上传人:b****1 文档编号:3099130 上传时间:2023-05-01 格式:DOCX 页数:13 大小:323.54KB
下载 相关 举报
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第1页
第1页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第2页
第2页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第3页
第3页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第4页
第4页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第5页
第5页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第6页
第6页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第7页
第7页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第8页
第8页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第9页
第9页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第10页
第10页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第11页
第11页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第12页
第12页 / 共13页
3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx

《3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。

3430110陈南博09计科A2实验报告五gdb远程调试实验Word文档格式.docx

15号楼507

指导教师

崔莉莉

组号

同组学生信息(请填写在下方)

09计科A3

丁云龙

094831523

一、实验目的和要求

1、掌握创建交叉编译环境的方法;

2、学习GDB本地调试方法,熟悉GDB的各项命令,熟练掌握利用GDB进行远程调试的过程。

二、实验内容和原理

实验内容:

1.创建交叉编译环境(利用ToolChain)。

2.利用GDB进行远程调试。

实验原理:

GDB功能一般来说,GDB主要帮助你完成下面四个方面的功能:

  1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

  2、可让被调试的程序在你所指定的调置的断点处停住。

(断点可以是条件表达式)

  3、当程序被停住时,可以检查此时你的程序中所发生的事。

  4、动态的改变你程序的执行环境。

GDB常用命令:

命 

描 

file

装入想要调试的可执行文件.

kill

终止正在调试的程序.

list

列出产生执行文件的源代码的一部分.

next

执行一行源代码但不进入函数内部.

step

执行一行源代码而且进入函数内部.

run

执行当前被调试的程序

quit

终止 

gdb

watch

使你能监视一个变量的值而不管它何时被改变.

break

在代码里设置断点, 

这将使程序执行到这里时被挂起.

make

使你能不退出 

gdb 

就可以重新产生可执行文件.

shell

使你能不离开 

就执行 

UNIXshell 

命令.

远程调试原理图:

GDB远程调试示意图:

三、主要仪器设备

1、安装有Linux操作系统的微型电子计算机1台

2、XSBase270或XSBase255ARM教学实验开发平台1套

四、操作方法与实验步骤

1.安装ToolChain,需要在开发主机上创建目录,并将光盘内容拷贝到目录中。

在根目录创建了一个名为pxa255的目录,已经将光盘内容拷贝到了该目录中。

#cd/root/pxa255

#cdToolchain

#cphybus-arm-linux-R1.1.tar.gz/usr/local

#tarxvfzhybus-arm-linux-R1.1.tar.gz

移动到bin目录下使用ls命令查看,可以看到一些编译工具,这些工具将会在之后的交叉编译过程中使用到。

为了之后任何目录下面都能使用Toolchain,必须对路径进行设置,打开/root/.bash_profile文件来设置路径,使用vi编译器来修改.bash_profile文件。

#cd/root

#vi~/.bash_profile

用vi打开此文件并添加下列路径

PATH=$PATH:

/usr/local/hybus-arm-linux-R1.1/bin

退出并保存该文件,使用source命令来使新的路径起作用。

#souce~/.bash_profile

此时使用arm-linux命令式,Toolchain中的工具会被使用可查看arm-linux-gcc命令查看版本#arm-linux-gcc–v

2.Toolchain测试

建立一个简单名为”hello.c”的C程序进行验证。

通过arm-linux-gcc命令可以生产一个运行在ARM的目标文件hello.用file查看其类型

启动目标板在minicom中login中输入root.

利用zmodem下载hello到XSBase目标板。

在minicom窗口中按Ctrl+A然后按Z键出现minicom配置窗口、按s选择zmodem

你可以看到PC机平台目录。

从/root中下载hello,用ls查看目标板hello,文件。

运行该文件可以看到运行结果

3.编译GDB

GDB用arm体系的GCC编译,因为XSBase的XscalePXA255芯片是arm内核,toolchain必须在主机平台上重新安装,来编译于arm的gdb.

编译GDBserve

解压gdb-5.3.tar.gz

#cd/root/pxa255/gdb

#cpgdb-5.3.tar.gz/usr/local

#cd/usr/local

#tarxvzfgdb-5.3.tar.gz

运行cnfigure创建make文件,执行make

#cdgdb-5.3

#./configure–target=arm-linux–prefix=/usr/local/arm-gdb–v

#make

#makeinstall

GDB客户端编译

移动到GDB目录编译

#cd/usr/local/gdb-5.3

#exportPATH=#PATH:

/usr/local/arm-gdb/bin

#./configure–target=arm-linux–host=arm-linux

XSBase的客户端程序在gdb/gdbserver

#cdgdb/gdbserver

#makeCC=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gcc

如果没有编译错误gdbserver将生成在gdb/gdbserver目录下,这个文件时gdb客户端程序,在XSBase下运行。

4.GDB调试

板子通过以太网进行调试,所以TCP/IP协议可用。

默认XSBase的ip是192.165.0.50

设置主机平台IP

5.TEST调试代码

创建一个test.c文件

运行test文件,查看结果

test文件没有达到预期效果所以需要用gdb调试程序

用arm-linux-gcc编译#arm-linux-gcc–gtest–otest

转移到xsbase上

下载test和gdbserver到XSBase,

利用zmodem来下载,前面已经说明过,此步省略。

执行test

有断错误明显不是我们希望得到的结果。

在XSBase板子上运行gdbserver。

从服务等待请求。

拷贝test程序到主机平台上的/usr/local/arm-gdb/bin目录下,然后执行arm-linux-gdb

连接到XSBase

连接成功的话,在XSBase上将出现下面信息。

6.调试

导入symbol文件

用list查看命令代码内容。

然后修改代码的过程在”五、实验数据记录和处理”中的2说明

退出GDB,修改错误,然后重新生成目标文件闯到目标机上运行,可以看出结果正确.

 

五、实验数据记录和处理

1.在编译GDB客户端程序时出现下面错误信息

……

Make:

”*”[linux-arm-low.o]错误1

解决这个错误,修改gdb/gdbserver/config.h文件

注释掉“#defineHAVE_SYS_REG_H1”

在运行make

#makeCC=/usr/local/hybus-arm-linux-R1.1/bin/arm-linux-gcc就可以了

2.修改test文件。

在第9行设置断点查找出错原因

执行代码

用step命令继续执行

XSBase输出变量j的值。

在下面的单步选中变量i和j的值

发现j=i/2-1是不真确应该修改为j=(double)i/2-1

查找其他bug,在strcpy(str,”hello,world”)设置一个断点

查看str变量值,然后单步运行pstr发现错误,修改13行前添加str=(char*)calloc(1,sizeof(char)).

六、实验结果与分析

作业1:

在实验报告中写出filehello命令执行后的显示结果,并比较与gcc命令产生的目标文件类型比较,说明二者有什么区别?

通过arm-linux-gcc命令生成的目标文件hello可以在PC机上运行吗?

写出原因。

Arm-linux-gcc的文件不能再PC机上运行,因为他没使用arm-linux内核,而目标板可以。

作业2:

如果要将实验三的”3.3使用预定义变量对多个.c文件编译”产生的运行结果运行在目标板上。

如何修改makefile文件,记录源程序,并将整个实验过程及运行结果记录在实验报告上。

Makefile:

七、实验心得与体会

本次实验,是利用gdb及toolchain对程序的远程修改,由上次实验的烧写,编写内核,到这次的修改程序,调试程序,是对xsbase的运用循序渐进的学习。

使我了解到了gcc和arm-linux-gcc的区别,还学会了makefile对arm-linux-gcc也能运用,巩固了以前的知识。

本次实验使我受益匪浅,为下次实验烧写文件系统做了良好的铺垫。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2