http://blog.csdn.net/lanmanck/article/details/4545023
【转帖请注明出处:blog.csdn.net/lanmanck】
1、首先下载insight,我这里是6.8版本,里面已经包含gdb和gdbserver了 :)
2、编译pc端得程序,类似visual studio,可以按照这篇文章来做:
http://linux.chinaunix.net/techdoc/develop/2008/12/28/1055528.shtml
但是有一点上述文章没有提到,那就是编译器链接库路径也要加进去的问题。
#cd insight
#./configure --target=arm-linux --prefix=/opt/work/insight --with-solib-absolute-prefix=/opt/armgcc/4.3.2/libc/lib
3、编译arm端得gdbserver:
cd insight/gdb/gdbserver
./configure --host=arm-linux --target=arm-linux
make
现在gdbserver已经生成,拷贝到arm文件系统的bin目录下即可。
============================调试方法===========================
1、打开arm-linux-insight,可以看到友好的界面,他会自动加载arm-linux-gdb
2、在界面打开一个arm可执行文件。这时会弹出对话框,让你选择gdb连接方式:有串口、tcp(网口)等。
3、在串口端运行gdbserver 192.168.1.2:1000 myarmexec,然后在insight选择好连接方式,点确定即可。
insight里的端口号1000好像改不了,咋回事?
注意:如果编译insight的时候,arm-linux-gcc的库路径没有加上去的话,会报一堆错误和警告,例如:
xxx is not at the expected address。
Error while mapping shared library sections。
解决方法如下2种之一:
1)、按照第一个步骤,把编译路径加上去:
--with-solib-absolute-prefix=/opt/armgcc/4.3.2/libc/lib
2)、在insight加载文件之前,设置好路径:
在insight的菜单打开gdb的console,用命令: set solib-absolute-path=/opt/armgcc/4.3.2/libc/lib
或者:set solib-search-path
现在,我们也可以像visual studio 那样调试linux程序了,嘿嘿.
####################################################################################
其他参考BLOG
http://blog.csdn.net/zfaquir/article/details/7547573
建立jlink+arm-linux-insight+GDB Server调试环境
一、方案
1、linux gcc编译,windows ads或iar调试。
2、linux gcc编译,windows keil或realview调试。
3、windows下ads或keil或iar编译调试。
4、虚拟机linux gcc编译,然后运行gdb通过串口tcp远程调试win主机的target, 需要win端有一个gdbserver,如jlink gdbserver.
5、纯linux下gcc编译,gdb+openocd+jlink或wiggler调试。
http://bbs.ednchina.com/BLOG_ARTICLE_280777.HTM
二、调试环境的建立
这里采用第4点的方法来建立调试环境, 作者使用主机windowsXP+虚拟机ubuntu10.4系统。
1、主机windows下安装usb驱动,jlink驱动,里面会自带jlink gdb server。
我使用Setup_JLinkARM_V424f.exe,网上下载,按步骤安装即可,安装后就可以识别到jlink。
(1)、J-Flash ARM V4.24f的使用。
可使用该工具下载bin文件到开发板子。
使用方法参考《jlink-jflash 手册(新).pdf》
(2)、gdb server
在程序-> SEGGER -> J-Flash ARM V4.24f -> j-Link GDB Server 打开该工具,如开发板子链接成功,则如下显示:
留意:1、Localhost only勾上后只能本机调试,对应ip为127.0.0.1。如果在虚拟机arm-linux-insight连接GDB Server,则不需要勾选该项;2、Little endian需要和编译器中设置的对应,不然无法断点和单步调试。
2、虚拟机ubuntu下安装arm-linux-gdb
(1)、下载gdb源码,
源码地址:http://www.gnu.org/software/gdb/download/
ftp://ftp.gnu.org/gnu/gdb
最新版本为gdb-6.5.tar.bz2。下载到某个目录,笔者下载到/home/share下。但要注意,gdb的版本需要和croostool 相匹配。
(2)、下载完后,进入/home/share目录,配置编译步骤如下:
#tar jxvf gdb-6.5-tar-bz2
#cd gdb-6.5
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb �Cv
(--target配置gdb的目标平台,--prefix配置安装路径,当然其他路径也可以, .跟下面配置一致即可,须在环境变量中声明,启动arm-linux-gdb需要,可更改/etc/profile或~/.bash_profile或~/.bashrc,添加export PATH=$PATH:/usr/local/arm-gdb/bin,这样可以找到路径).
#make (这里的时候configure: error: no termcap library found
make[1]: *** [configure-gdb] 错误 1
解决方法:sudo apt-get install libncurses5-dev
安装完后,在make就OK了!)
#make install
3、安装insight 6.8.1
(1)、安装较低版本的gcc
#apt-get install gcc-4.2
#ln -s gcc-4.2 gcc
#gcc �Cv
(2)、下载insight源码,下载路径:ftp://sourceware.org/pub/insight/releases
(3)、安装arm-linux-insight
1) 安装X界面开发库 sudo apt-get install libx11-dev (包启在libgd2-xpm-dev)
2) 安装安装termcap库(gdb需要)sudo apt-get install libncurses5-dev
3) 修改端口
insight编译之前,要修改下源码,就是修改默认的端口,否则会是1000不能改的,因为我用的是jlink,其端口2331是不能修改的,所以只有修改gdb的端口了,找到/gdb/gdbtk/libaray/targetselection.itb ,查找1000,将其修改为2331(jlink端口)
4) ./configure --target=arm-linux --enable-sim --prefix=/usr/local/insight
5) make ; make install
6) 最后添加其路径到系统中去,修改/etc/environment 添加/usr/local/insight/bin. 更新下此文件 source /etc/environment
(4)、arm-linux-insight的使用
连接好硬件: jlink连接好开发板和pc,
打开windows端的jlinks gdb server ,如果硬件连接成功,jlink和Tagget 后面会变绿色, waiting for connection是红色的
linux端打开arm-linux-insight ,选择file->open,选择打开你刚刚编译好的一个elf格式的中间文件,选择file->targetsetting
Target:Remote/TCP
Hostname:192.168.1.172
Port:2331
注意:这里的hostname指的是你的windows的ip,windows的ip和虚拟机的ip要在同一个网段,主机与虚拟机的连接采用bridged,
而且要保证主机与虚拟机可以正常通讯。
设置好之后点击Run->connect to target,连接成功的话gdbserver的GDB 后面会显示Connected to 192.168.xxx.xxx,这个是你虚拟机的ip,到这里就ok了.
三、问题集锦:
1、使用insight连接不到GDB Server的原因如下:
将Localhost only的勾去掉即可,当选择该项时,表示只能本地主机连接,使用127.0.0.1的ip地址,虚拟机linuxl连接不到。
2、不能断点调试的原因:
端对齐没选择正确导致,需要选择Little endian。
另外,在虚拟机insight需要先把调试的elf 选择Run->download. 然后才可以设置断点,进行调试等动作。