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 adsiar调试。

2、linux gcc编译,windows keilrealview调试。

3、windowsadskeiliar编译调试。

4、虚拟机linux gcc编译,然后运行gdb通过串口tcp远程调试win主机的target, 需要win端有一个gdbserver,如jlink gdbserver.

5、linuxgcc编译,gdb+openocd+jlinkwiggler调试。

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 打开该工具,如开发板子链接成功,则如下显示:

1336488573_3078.jpg

留意:1Localhost only勾上后只能本机调试,对应ip127.0.0.1。如果在虚拟机arm-linux-insight连接GDB Server,则不需要勾选该项;2Little 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 –v

(--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

安装完后,在makeOK了!)

#make install

3、安装insight 6.8.1

 (1)、安装较低版本的gcc

    #apt-get install gcc-4.2

    #ln -s gcc-4.2 gcc

    #gcc –v

(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 ,如果硬件连接成功,jlinkTagget 后面会变绿色, waiting for connection是红色的

linux端打开arm-linux-insight ,选择file->open,选择打开你刚刚编译好的一个elf格式的中间文件,选择file->targetsetting

   TargetRemote/TCP

   Hostname192.168.1.172    

   Port:2331

注意:这里的hostname指的是你的windowsipwindowsip和虚拟机的ip要在同一个网段,主机与虚拟机的连接采用bridged

而且要保证主机与虚拟机可以正常通讯。

设置好之后点击Run->connect to target,连接成功的话gdbserverGDB 后面会显示Connected to 192.168.xxx.xxx,这个是你虚拟机的ip,到这里就ok了.

三、问题集锦:

1、使用insight连接不到GDB Server的原因如下:

1336488757_2285.jpg


Localhost only的勾去掉即可,当选择该项时,表示只能本地主机连接,使用127.0.0.1ip地址,虚拟机linuxl连接不到。


2、不能断点调试的原因:

端对齐没选择正确导致,需要选择Little endian

另外,在虚拟机insight需要先把调试的elf 选择Run->download. 然后才可以设置断点,进行调试等动作。

1336488799_1499.jpg