热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gdbserver移植+eclipse平台gdbserver调试armlinux程序

https:blog.csdn.netfz835304205articledetails17166973一、配置编译及安装下载1.到http:www.gnu.orgsoftware

https://blog.csdn.net/fz835304205/article/details/17166973

 

一、配置编译及安装下载 

1. 到http://www.gnu.org/software/gdb下载gdb-7.6.tar.gz

2. 解压
#tar xzvf /tmp/gdb-7.6.tar.gz 

3. 建立配置文件、编译 

#cd gdb-7.6

./configure --target=arm-linux --prefix=/usr/local/gdb -v

#make 
#sudo make install 
 

(--target配置gdb的目标平台,--prefixp指定了编译结果的存放位置,也就是安装目录。编译完后可以在/usr/local/gdb/bin目录下找到可执行的arm-linux -gdb,  arm-linux-run。

添加环境变量

#gedit ~/.bashrc

export PATH=/usr/local/arm/gdb/bin:$PATH

4. gdbserver的移植 
gdbserver要用到gdb源码目录下的一些头文件,因此无法在gdb源码目录之外编译文件。 
进入gdb/gdbserver目录: 
 必须在gdbserver目录下运行配置命令,此时才能用相对路径 
#./configure --target=arm-linux --host=arm-linux 
(--target=arm-linux表示目标平台,--host表示主机端运行的是arm-linux-gdb,不需要配置—prefix,因为gdbserver不在主机端安装运行) 

# make CC=/home/linux-138/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc

 gdb-7.6/gdb/gdbserver/linux-arm-low.c中:
 #ifdef HAVE_SYS_REG_H
 //#include   (注释这一行)
 #endif
 然后再重新make 

(这一步要指定你自己的arm-linux-gcc的绝对位置,我试过相对的不行,提示make: arm-linux-gcc: Command not found,可好多人都用的相对路径,即直接赋值arm-linux-gcc,可采取make时传递参数,也可以直接修改gdbserver目录下的Makefile文件中的环境变量CC) 

./gdbserver: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory

缺少动态链接库

make CC=/home/linux-138/L138_SDK/linux-devkit/bin/arm-arago-linux-gnueabi-gcc CFLAGS=-static

重新编译ok

 

  1. 调试程序
    通过加-g参数 交叉编译带调试信息的程序

     

    $ arm-linux-gcc -g ipcam.c -o ipcam

    拷贝到设备端后,使用gdbserver打开程序

    $gdbserver :10000 ipcam

    主机使用arm-linux-gdb调试程序

    $ arm-linux-gdb ipcam

    输入gdb远程调试指令

    (gdb) target remote :10000

    这时,设备端打印

    Remote debugging from host 192.168.1.102

    说明远程调试已经建立起,可以开始在host端调试

  2. gdb指令可真多,我不是牛人,自认没那技术通过指令就能调试出想要的结果,结合eclipse的图形调试界面快速寻找答案才是我想要的

gdbserver编译安装完成,接下来该gdb本地调试了,由于gdb命令界面的调试一个大的工程还是很不爽的,那就借助eclipse强大的功能来协助调试吧,整整搞了两天才把这个环境搭建起来,linux下很多东西和windos下不一样,windos下的调试环境一般很友好,不用费什么周折,但linux下有些东西别人的一句话就够你折腾好几天了,趁年轻再折腾折腾,网上的大都比较老,我的是eclipse3.7 gdb7.6 有的地阿芳还是不一样的,呵呵。

想起一句很重要的话,在linux下一般遇到问题搞了好久没搞定,那就升级新版本吧,名言呀,切记。

一,建好eclipse工程

不多说了,网上资料一箩筐,不会的自己补课。

 

 

二 设置debug选项

run->debug configurations

在c remote application 菜单下双击,新建mydebug

c application选项为要调试的应用程序

gdb debugger选择编译的arm-linux-gdb

在下面using gdb manual remote 单击 select other  

选择 manual remote

选择tcp 填入开发板ip和端口

三 开始调试

开发板端

root@FZ:/# gdbserver 192.168.0.105:5555 ./test


推荐阅读
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • Java注解(Annotations)简介与应用
    自从Java SE 5.0引入了注解(Annotations)这一特性以来,它就成为了增强代码功能和可读性的重要工具。注解允许开发者在不改变程序逻辑的前提下,在源代码中添加额外的元数据信息。 ... [详细]
author-avatar
lb小小凡人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有