转:ubuntu10.04下使用insight(需要先装有openocd)

24 篇文章 0 订阅

insight是基于gdb的,所 以gdb需要的环境是一定要有的,新力德安装libx11-dev libncurses5-dev和libc6-dev这3个依赖文件,先安装好啊,不然等出错了再安装需要重新编译,麻烦死了。insight编译之前, 要修改下源码,就是修改默认的端口,否则会是1000不能改的,因为我用的是jlink,其端口2331是不能修改的,所以只有修改gdb的端口了,找到 /gdb/gdbtk/libaray/targetselection.itb   ,查找1000,将其修改为2331(jlink端口)这里还需要注意一点,如果你跟我一样一定要修改insight端口,一定要看仔细了,这是 insight第一次编译安装,如果你以前安装过又删除了,再按照我这样修改编译安装 是不会有效的,除非你保证卸载的非常干净(其实源码make uninstall啥都没有写),否则,你得重新安装系统了!

 

软件的安装

1. tar jxvf insight-6.8-1.tar.bz2

2. cd insight-6.8-1

3. ./configure --prefix=/usr/local/insight --target=arm-linux

4. make
     编译很久产生错误
     cc1: warnings being treated as errors
     .././gdb/cli/cli-cmds.c: In function ‘pwd_command’:
     .././gdb/cli/cli-cmds.c:323: error: ignoring return value of ‘getcwd’, declared           with attribute warn_unused_result
     make[2]: *** [cli-cmds.o] 错误 1
     make[2]:正在离开目录 `/home/qiang/tools/insight-6.8-1/gdb'
     make[1]: *** [all-gdb] 错误 2
      make[1]:正在离开目录 `/home/qiang/tools/insight-6.8-1'
     make: *** [all] 错误 2
         
    解决方法: vi gdb/Makefile 搜索-Werror
     老代码 
     WERROR_CFLAGS = -Werror
     修改为新代码
     WERROR_CFLAGS = #-Werror

     接着继续 sudo make

5. make install

最后添加其路径到系统中去,修改/etc/environment 添加/usr/local/insight/bin. 更新下此文件 source /etc/environment

 

6.然后就是编译出gdbserver了,

 cd ~/gdb-6.8/gdb/gdbserver

$ ./configure --target=arm-linux --host=arm-linux

cd ~/gdb-6.8/gdb/gdbserver

$ make CC=arm-linux-gcc        指定编译器,也可以直接指定路径

这样在gdb-6.8/gdb/gdbserver目录下就生成了一个gdbserver可执行文件,复制到开发板系统(嵌入式linux)的/bin下

 

7.Insight工具的使用
主机上运行:     arm-linux-insight
目标板上运行: gdbserver Host IP:Port myapp -qws

 

部分问题解决:

 

l1、inux-arm-low.c:37:21: error: sys/reg.h: No such file or directory

解决方法:
根据在linux-arm-low.c中:
#ifdef HAVE_SYS_REG_H
#include <sys/reg.h>
#endif

在gdb/gdbserver/config.h修改如下:
/* Define if you have the <sys/reg.h> header file.  */
#define HAVE_SYS_REG_H 1

/* Define if you have the <sys/reg.h> header file.  */
//#define HAVE_SYS_REG_H 1 省略
2、make: arm-linux-gcc: Command not found
make: *** [inferiors.o] Error 127
解决方法:
将CC=arm-linux-gcc修改为绝对路径
即:CC=/usr/locar/arm/4.2.2-eabi/usr/bin/arm-linux-gcc
实例:
//hello.c
#include<stdio.h>
#include<string.h>
int main()
{
char *str=NULL;
strcpy(str,"hello");
printf("str is %s/n",str);
return 0;
}    

#arm-linux-gcc -g hello.c -o hello
设置主机IP地址为:192.168.1.10,开发板系统IP地址为:192.168.1.230(一般只需设置成同一个网段就行),
在开发板中:
#gdbserver 192.168.1.230:1234 hello
Process test created:pid=80   //使gdbserver在1234端口监听。
在主机中:
#arm-linux-gdb
(gdb) target remote 192.168.1.230:1234    //若链接成功,开发板的串口终端会显示如下:
Remote debugging from host 192.168.1.10
(gdb) symbol file  hello                               //此处的hello是PC机上的所在路径的hello
(gdb) list
(gdb) break 5
(gdb) continuing
(gdb) step                //会提示出现段错误(通常有内存的非法访问引起的)


常用的gdb调试命令:(某些唯一开头字母的命令可用开头字母直接替代,也可用Tab来显示其完整的命令名)
file 文件名        在gdb中载入某可执行文件                    symbol file hello
break n            设置断点                                break 5
info                 查看和可执行程序相关的各种信息      info breakpoint   delete/disable/enable breakpoint num
kill                终止正在调试的程序
print                显示变量或者表达式的值
set args         设置调试程序的运行参数
watch                在程序中设置观测点(如果数据改变,将给出变化前后的情况)
delete            删除设置的某个断点或观测点
clear                删除设置的某个断点或观测点
continue            从断点处继续执行程序
list                列出gdb中加载的可执行程序的代码
run                运行在gdb中加载的可执行程序
next                单步执行所加载的程序
step                单步,可进入函数内,查看执行情况(用finish回到调用处)
whatis            查看变量或函数类型
pype                显示数据结构定义情况
make                在不退出gdb情况下,编译程序
quit                退出gdb

gdb调试带参数的程序
gdb --args ./testprg arg1 arg2

 

 

转自:http://blog.csdn.net/shopping988/archive/2010/12/21/6090170.aspx

参考:http://hi.baidu.com/zjsxycli/blog/item/99863fddf1be55196227986e.html

参考:http://blogold.chinaunix.net/u3/110913/showart_2493386.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值