Linux嵌入式开发调试器的搭建和使用(mips)
来源:互联网 发布:传奇充值平台源码 编辑:程序博客网 时间:2024/06/04 08:03
1
下载调试器源代码调试器的源代码可以在GNU的网站上下载到:
http://www.gnu.org/software/gdb/download/
本文档以网站上最新的版本7.0.1为编译对象。
2
编译调试器源代码2.1
服务器环境在编写本文档的时候,所使用的服务器环境如下:
CPU
: Intel(R) Pentium(R) D CPU 2.80GHz
MEM
: 1.5GB
OS
: Fedora 9 ,x86_64位版本
2.2
源代码文件结构下载的源代码包文件名是gdb-7.0.tar.tar,需要在Linux下解压缩:
# tar xzvf gdb-7.0.tar.tar
解压缩后会生成一个新的目录gdb-7.0,目录结构如下:
2.3
编译gdb在编译gdb之前,首先需要建立一个文件夹。我们建立一个跟gdb-7.0平行的文件夹:
进入文件夹buildgdb:
# cd buildgdb
然后运行configure指令:
# ../gdb-7.0/configure --target=mips-linux --prefix=/home/wangtq/test/buildgdb
(注:--target是指目标机器的cpu架构,我们现在用的是mips架构的cpu,所以使用mips-linux。如果你用的是ARM架构的cpu,则target的值设为arm-linux。--prefix指定了将文件安装在什么地方,示例中将文件安装在buildgdb所在的目录。)
指令运行的效果如下图所示:
Configure执行后,会去检测Linux系统中是否安装了运行所需要的工具以及当前系统的配置,并根据这些信息生成Makefile文件。
运行完成后,依次执行下列的指令:
# make
# make install
这时,我们看到在buildgdb目录下有如下的目录结构:
在bin/目录下,有三个文件:
这三个文件就是我们所需要的文件。将这三个文件复制到/bin目录下:
# cp mips-linux-* /bin
gdb的编译到此完成。
2.4
编译gdbserver跟编译gdb一样,编译gdbserver时,我们也需要建立一个文件夹,比如:
# mkdir buildgdbserver
这时,目录结构如下:
我们进入目录buildgdbserver,然后执行gdbserver的configure文件:
# cd buildgdbserver
# ../gdb-7.0/gdb/gdbserver/configure --host=x86_64-linux --target=mips-linux CC=/cross_compile_path/cross_compile_gcc
(注:--host是指Linux Server的CPU架构。我们使用的是x86的64位机,所以指定为x86_64-linux,如果是32位的x86,则为x86-linux。 --target的含义跟编译gdb时的定义一样。CC定义了交叉编译工具,请输入实际所使用的交叉编译工具gcc。)
跟gdb的编译一样,configure会检测系统配置,然后生成Makefile文件。
下图是configure的一个示例:
运行完成后,执行make指令:
# make
这时,在buildgdbserver下会生成gdbserver和gdbreplay两个工具。将这两个工具copy到你的NFS目录下的bin文件夹里,比如在我们的Linux Server下的目录/var/lib/tftpboot/rootfs.liqh/bin/,或者通过工具把它们下载到板子上。
3
开始调试下图是基本的调试架构:
目标开发板和主机通过网络连接在一起,目标板上运行gdbserver,开发板上运行gdb。
首先,在开发板启动u-boot并等进入了NFS后,输入命令:
# gdbserver HostIPort prog
其中HostIP是指Linux Server的IP,Port可以随意指定为大于1024的值。prog是你需要调试的代码。注意,在编译prog的时候,必须加上-g选项。
比如在调试PVRDemo的时候,等板子启动完成后,将驱动等装载后,输入:
# gdbserver 10.2.100.251:2222 PVRDemo
这时会出现”Listening on port 2222”的提示,如下图:
接着在Linux Server上依次输入:
# mips-linux-gdbtui /nfs_path/prog
#(gdb) target remote TargetIPort
mips-linux-gdbtui是一个带调试代码的工具,可以在运行到断点的时候,显示出断点处的代码。如下图所示:
“/nfs_path/prog”是指你当前运行的带调试信息的程序。这个程序必须跟我们在板子上启动的程序是同一个。
“target remote TargetIPort”:target remote使得我们在Host端调试器和板子上的gdbserver建立TCP/IP通讯,TargetIP是板子的IP地址,Port跟板子上使用gdbserver时使用的Port相同。
通讯成功以后,我们能够在Host端的调试器上看到类似于如下的信息:
(gdb) target remote 10.2.100.249:2222
Remote debugging using 10.2.100.249:2222
这时,在Linux Server上输入:
(gdb) c
程序开始执行。
下载调试器源代码调试器的源代码可以在GNU的网站上下载到:
http://www.gnu.org/software/gdb/download/
本文档以网站上最新的版本7.0.1为编译对象。
2
编译调试器源代码2.1
服务器环境在编写本文档的时候,所使用的服务器环境如下:
CPU
: Intel(R) Pentium(R) D CPU 2.80GHz
MEM
: 1.5GB
OS
: Fedora 9 ,x86_64位版本
2.2
源代码文件结构下载的源代码包文件名是gdb-7.0.tar.tar,需要在Linux下解压缩:
# tar xzvf gdb-7.0.tar.tar
解压缩后会生成一个新的目录gdb-7.0,目录结构如下:
2.3
编译gdb在编译gdb之前,首先需要建立一个文件夹。我们建立一个跟gdb-7.0平行的文件夹:
进入文件夹buildgdb:
# cd buildgdb
然后运行configure指令:
# ../gdb-7.0/configure --target=mips-linux --prefix=/home/wangtq/test/buildgdb
(注:--target是指目标机器的cpu架构,我们现在用的是mips架构的cpu,所以使用mips-linux。如果你用的是ARM架构的cpu,则target的值设为arm-linux。--prefix指定了将文件安装在什么地方,示例中将文件安装在buildgdb所在的目录。)
指令运行的效果如下图所示:
Configure执行后,会去检测Linux系统中是否安装了运行所需要的工具以及当前系统的配置,并根据这些信息生成Makefile文件。
运行完成后,依次执行下列的指令:
# make
# make install
这时,我们看到在buildgdb目录下有如下的目录结构:
在bin/目录下,有三个文件:
这三个文件就是我们所需要的文件。将这三个文件复制到/bin目录下:
# cp mips-linux-* /bin
gdb的编译到此完成。
2.4
编译gdbserver跟编译gdb一样,编译gdbserver时,我们也需要建立一个文件夹,比如:
# mkdir buildgdbserver
这时,目录结构如下:
我们进入目录buildgdbserver,然后执行gdbserver的configure文件:
# cd buildgdbserver
# ../gdb-7.0/gdb/gdbserver/configure --host=x86_64-linux --target=mips-linux CC=/cross_compile_path/cross_compile_gcc
(注:--host是指Linux Server的CPU架构。我们使用的是x86的64位机,所以指定为x86_64-linux,如果是32位的x86,则为x86-linux。 --target的含义跟编译gdb时的定义一样。CC定义了交叉编译工具,请输入实际所使用的交叉编译工具gcc。)
跟gdb的编译一样,configure会检测系统配置,然后生成Makefile文件。
下图是configure的一个示例:
运行完成后,执行make指令:
# make
这时,在buildgdbserver下会生成gdbserver和gdbreplay两个工具。将这两个工具copy到你的NFS目录下的bin文件夹里,比如在我们的Linux Server下的目录/var/lib/tftpboot/rootfs.liqh/bin/,或者通过工具把它们下载到板子上。
3
开始调试下图是基本的调试架构:
目标开发板和主机通过网络连接在一起,目标板上运行gdbserver,开发板上运行gdb。
首先,在开发板启动u-boot并等进入了NFS后,输入命令:
# gdbserver HostIPort prog
其中HostIP是指Linux Server的IP,Port可以随意指定为大于1024的值。prog是你需要调试的代码。注意,在编译prog的时候,必须加上-g选项。
比如在调试PVRDemo的时候,等板子启动完成后,将驱动等装载后,输入:
# gdbserver 10.2.100.251:2222 PVRDemo
这时会出现”Listening on port 2222”的提示,如下图:
接着在Linux Server上依次输入:
# mips-linux-gdbtui /nfs_path/prog
#(gdb) target remote TargetIPort
mips-linux-gdbtui是一个带调试代码的工具,可以在运行到断点的时候,显示出断点处的代码。如下图所示:
“/nfs_path/prog”是指你当前运行的带调试信息的程序。这个程序必须跟我们在板子上启动的程序是同一个。
“target remote TargetIPort”:target remote使得我们在Host端调试器和板子上的gdbserver建立TCP/IP通讯,TargetIP是板子的IP地址,Port跟板子上使用gdbserver时使用的Port相同。
通讯成功以后,我们能够在Host端的调试器上看到类似于如下的信息:
(gdb) target remote 10.2.100.249:2222
Remote debugging using 10.2.100.249:2222
这时,在Linux Server上输入:
(gdb) c
程序开始执行。
这个时候,你可以设置断点,观察变量,查看函数调用堆栈等等。
文章出处:http://bbs.chinaunix.net/thread-1940280-1-1.html
- Linux嵌入式开发调试器的搭建和使用(mips)
- 嵌入式Qtopia-2.2.0开发环境的搭建和使用
- 嵌入式Qtopia-2.2.0开发环境的搭建和使用
- 使用Magic linux搭建嵌入式开发环境
- 嵌入式LINUX内核开发专家谈“龙芯”签约MIPS
- linux 下嵌入式开发调试
- 嵌入式 Linux下使用minicom串口调试开发板
- 搭建Linux嵌入式开发环境
- 搭建Linux嵌入式开发环境
- 嵌入式Linux开发环境搭建
- 嵌入式Linux开发环境搭建
- 嵌入式Linux开发环境搭建
- 嵌入式Linux开发环境搭建
- 嵌入式Linux开发环境搭建
- 基于ARM和Linux交叉开发环境的搭建-嵌入式系统(一些概念不错写的~~)
- 嵌入式开发交叉调试环境搭建
- 用qemu搭建基于arm和linux的嵌入式开发环境
- 搭建嵌入式linux应用程序调试环境
- 伪随机数的错误使用情况
- sqlplus连接数据库报ORA-21561: OID Generation Failed
- Linux查找命令集合
- fgets,fputs,gets,puts
- 一起学mini2440裸机开发(二)--MDK自带的S3C2440.s分析
- Linux嵌入式开发调试器的搭建和使用(mips)
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程 zz
- MVC
- Java内存模型【转】
- struts2.1.8的配置问题
- 杭电acm1061
- [Python] 多线程编程
- MFC的使用技巧 (如何删除一个类)
- shell内部命令