热门标签 | 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


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
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社区 版权所有