搭建交叉调试环境 arm-linux-gdb配合gdbserver

    在嵌入式开发中,有时候需要进行源码级别的调试,可以设置断点,单步执行,相比于每步打印printf或者printk来说,更加友好。下面就来介绍这种调试方法。

    gdb交叉调试类似于网络浏览器,本地PC为客户端,远程开发板为服务器端,双方都要统一编译工具链,版本最好保持一致。 

   --target 指定了目标机交叉编译器前缀,比如--target=arm-linux ,缺省值为i386-linux

   --host   指定了编译后的程序需要在哪里运行, 比如,--host=arm-linux

   --prefix  指定了要安装的目录

    因此,在编译arm-linux-gdb的时候,不需要指定host,因为它是在本地PC上跑的,在编译gdbserver时,需要指定host为arm-linux,因为,gdbserver是在arm平台上跑的。两者都需要指定相同的target。

    编译arm-linux-gdb

    在gdb-7.8的解压目录下新建 arm-gdb,用于存放编译生成文件。

    ./configure --target=arm-linux --prefix=/ -gdb/

     然后make && make install ,就可以在arn-gdb/bin/目录下面找到arm-linux-gdb,

     如果有需要,可以将此执行路径加入到系统环境变量中去。

    编译gdbserver

    在gdb-7.8目录中,切换到gdb/gdbserver目录中,

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

    然后 make CC=/opt/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc ,就可以再当前目录下生成gdbserver。

    这里需要注意的是运行gdbserver还需要libthread_db库,若你自己做的文件系统内没有这个库的话需要将本地交叉编译工具中的libthread_db*拷贝到开发板中去。

    sudo cp /opt/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/libthread_db* /home/hao/nfs/lib/ –d

    使用-d选项,复制时,连同链接关系一起复制过去。

    使用方法

    将生成的gdbserver拷贝到开发板上去,PC机和开发板之间通过nfs文件系统沟通,开发板IP:192.168.0.200,本地主机IP:192.168.0.104

    在本地机器上面,用arm-linux-gcc –g 编译一个应用程序,在开发板上,执行

   

    gpbserver使用方法: gpbserver 开发板ip地址:通信端口(随意取) 要调试的程序 【程序的命令行参数】

    然后在本地机器上面,启动arm-linux-gdb,操作如下:

  

    连接成功后,开发板上会显示:

   

    然后就可以在本地PC上面执行gdb命令,调试输出在

    注意:执行target remote 后,开发板上面的程序已经在运行,本地不能使用run命令,而能用continue命令。

    调试命令在本地输入,调试输出结果在开发板上面输出。

    原理介绍,在开发板上面的gdbserver会启动一个子进程,然后用测试程序替换子进程,自身作为父进程,接收来自PC机上面arm-ling-gdb的调试命令输入,

   

    让程序在奔溃时产生core dump文件,用PC机上面的arm-linux-gdb来分析此文件,确定崩溃位置。  

    1. 产生core dump文件

       linux系统默认是不产生core dump文件(ulimit –c 得出结果为0,程序不产生),设置ulimit –c unlimited,不限制core dump输出大小。

    2. 执行待测试程序,产生core dump文件,默认名为core

    3. 使用arm-linux-gdb调试core文件

        在本地PC机器上面,执行 arm-linux-gdb ./test_debug ./core 文件,就可以发现产生段错误的地址。

   

      这样的调试,看起来很复杂,如果实在想调试,而且CPU处理速度够快的话,直接移植低版本的gdb到板子上就行。

 

  gdb交叉调试相关链接:

  tiny4412 android gdb调试问题,不能打断点(已解决)

  使用gdbserver远程调试 遇到问题

  gdb+gdbserver交叉编译

Technorati 标签: gdbserver,linux

时间: 2024-11-05 17:40:00

搭建交叉调试环境 arm-linux-gdb配合gdbserver的相关文章

用Intellij idea搭建solr调试环境

最近在使用solr时,配置会有一些问题,log里面打印出日志了,但是还是不知道发生这样错误的原因.于是想学习一下相关的solr源码,以下是如何搭建solr调试环境步骤. solr调试环境搭建,首先下载源码. 可以通过 http://archive.apache.org/dist/lucene/solr/ 下载各个版本的源码.还可以在github下载最新的solr代码,地址是:https://github.com/jeniss/lucene-solr. 源码导入Intellij idea 在下载后

交叉编译和交叉调试环境搭建及使用

1. 交叉编译器 1.1 交叉编译器介绍 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译.这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler). 1.2 搭建交叉编译环境 1.2.1 实验环境 交叉编译工具:arm-linux- 4.2.2 编译平台:ubuntu10.10 开发板类型:UT-S3C6410 1.2.2 搭建步骤 1) 在/usr/local

使用Sublime Text搭建python调试环境[转]

pycharmt等IDE虽然用着爽,但毕竟在速度.资源上还是比较让人不爽的. 使用IDE无非是图个方便省事,特别是像我这种有些记性差的来说. IDE说起来方便于的几个地方就是: 1.语法颜色高亮 2.语法自动完成 3.方便的调试功能 现在有了Sublime Text这枚神器,配合上插件也可以比较方便地搭建一个方便的类似IDE的python调试环境了. 1.现在可以安装sublime text 3,然后安装package control,这玩意可以让你方便安装插件包.安装方法网上一砣. 2.安装S

使用Sublime Text搭建python调试环境

原文地址:http://blog.csdn.net/wenxuansoft/article/details/38559731 pycharmt等IDE虽然用着爽,但毕竟在速度.资源上还是比较让人不爽的. 使用IDE无非是图个方便省事,特别是像我这种有些记性差的来说. IDE说起来方便于的几个地方就是: 1.语法颜色高亮 2.语法自动完成 3.方便的调试功能 现在有了Sublime Text这枚神器,配合上插件也可以比较方便地搭建一个方便的类似IDE的python调试环境了. 1.现在可以安装su

浅谈几种搭建科学计算环境的linux工具

现在做科学计算相关的工具有很多.除了大多数时候用在超算上的module环境管理之外,也有很多有趣的软件.而且并不是所有人所有时候都可以使用超算,超算也并不是科学计算的唯一硬件解决方案.我写这个文章之前,尝试管理我们组的服务器环境有一年的时间了,其中run过4,5个不同的模式,也算是在搭建环境上有点心得,正好今天总结分享下. 一开始我在搭建环境的时候,就是简单的有pre-build包就直接安装,没有就源代码编译,走的耿直路线,但是很快就发现,随着服务器库环境的逐渐复杂,这样的作法会使得整个环境变量

HBase二次开发之搭建HBase调试环境,如何远程debug HBase源代码

版本 HDP:3.0.1.0 HBase:2.0.0 一.前言 之前的文章也提到过,最近工作中需要对HBase进行二次开发(参照HBase的AES加密方法,为HBase增加SMS4数据加密类型).研究了两天,终于将开发流程想清楚并搭建好了debug环境,所以就迫不及待地想写篇文章分享给大家. 二.思路 首先看到这个需求,肯定是需要先实现HBase配置AES加密<HBase配置AES加密>,或者还可以再继续了解实现SMS4加密算法<Java版SMS4加密解密算法>.等到这些都完成之后

用Qemu模拟vexpress-a9(二) --- 搭建u-boot调试环境

参考: http://blog.csdn.net/caspiansea/article/details/12986565 环境介绍 Win7 64 + Vmware 11 + ubuntu12.04 32 u-boot 版本:u-boot-2015-04 Linux kernel版本:linux-3.16.y busybox版本:1_24_stable 交叉编译工具链:arm-linux-gnueabi- qemu版本:stable-2.4 下载.编译u-boot代码 u-boot从下面的网址获

[原创]搭建UEFI调试环境

需要的软件包如下 安装UEFI开发环境EDK2 本文在Windows7x64上测试,安装Windows SDK作为编译器 安装.Net Framework 4 安装Windows SDK v7.1 安装配置EDK2设置TARGET=NOOPT,TARGET_ARCH=X64,TOOL_CHAIN_TAG=VS2010x86,别的步骤请参考其它文章 编译OVMF 给OvmfPkg添加NOOPT的TARGET,2016-7-16的edk2需要修改,以后的edk2更新了应该不需要. 执行编译命令:bu

1.使用pycharm搭建开发调试环境【转】

感谢 feigamesnb 第一步:安装python2.7环境 去https://www.python.org/downloads/下载windows版本的python,选择2.7版本,按提示安装,并将安装路径加入到系统变量中! 第二步:安装pycharm 去官方http://www.jetbrains.com/pycharm/download/下载pycharm社区版,按提示安装! 第三步:安装postgresql 去官方http://www.postgresql.org/download/w