• Linux远程调试工具——gdbserver



    活动地址:CSDN21天学习挑战赛

    img
    个人主页:董哥聊技术
    我是董哥,嵌入式领域新星创作者
    创作理念:专注分享高质量嵌入式文章,让大家读有所得!
    img

    1、介绍

    对于开发者来说,调试必不可少。

    对于开发PC软件,通常系统已经继承了调试工具(比如Linux系统的GDB),或者IDE直接支持对程序的调试。

    而对于开发嵌入式软件来说调试的手段比较有限,很多开发者仅有的调试手段依然是最原始的打印(我也是其中之一)。

    当然除了打印调试之外还有通过gdb+gdbserver来调试,gdbserver在目标系统中运行,gdb则在宿主机上运行。

    简而言之,gdbserver 是一个程序,它允许宿主机可以通过网络,远程调试目标板。

     

    2、如何使用

    2.1 编译器准备

    这里就不再详细讲解编译器的安装什么的了,网上一大把!

    #直接安装
    sudo apt-get install gcc-arm-linux-gnueabihf			
    
    #源码安装
    $ tar zxvf gdb-7.12.tar.gz 
    $ cd gdb-7.12/
    $ ./configure --target=arm-linux --prefix=$PWD/__install
    $ make
    $ make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    编译完成后,最终会生成gdbserver 的可执行程序,这个就是我们要使用的工具。

     

    2.2 目标机准备

    1. 我们将gdb_server可执行程序放置目标板上。
    2. 再将我们要调试的程序放置目标板上,如helloworld
    3. 使用gdb_server进行调试,使用方法如下:

    img

    gdbserver 192.168.xx.xx:1234 ./helloworld
    
    • 1

    192.168.xx.xx:IP地址信息

    1234:自定义端口号

    ./helloworld:运行要仿真的程序

     

    此时gdbserver监听端口号1234,并等待客户端连接。

     

    2.3 宿主机准备

    1. 在宿主机(Ubuntu)上,使用gdb调试
    2. 远程连接目标机
    3. 运行程序
     $ gdb
     (gdb) target remote 192.168.xx.xx:1234
     Remote debugging using :1234
     c		#运行
    
    • 1
    • 2
    • 3
    • 4

    target remote:远程连接到指定IP的端口

    c:全速运行

     

    3、gdb_server详解

    gdbserver <comm> <program> [<args> ...]
    
    • 1

    comm:通信方式选择,可以是USBTCP等多种方式

    program:要调试的程序

     

    gdbserver --attach <comm> <pid>
    
    • 1

    pid:是当前正在运行的进程的进程 ID。

     

    4、参考文章

    [1]:https://blog.csdn.net/m0_43406494/article/details/124815879

    img
  • 相关阅读:
    官方Redis视图化工具Redisinsight
    Clion代码提示功能消失无法标出错误代码
    Deformable DETR(2020 ICLR)
    C++笔记之关于函数名前的取址符
    写前端组件的记录
    1.12 字典(Python)
    C++ 指针调用
    当代博物馆中的3DGIS虚拟现实搭建
    Python和Tensorboard的下载和安装
    Spring之BeanFactoryPostProcessor(bean工厂后置处理器)
  • 原文地址:https://blog.csdn.net/dong__ge/article/details/126322091