ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

devtools/2024/11/13 3:24:33/

linuxgnu_gdbgdbserver_0">ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

本教程作为gdb/gdbserver编译安装教程的一个补充,教会大家如何使用gdb/gdbserver进行远程调试。

在这里插入图片描述

如上图所示,我们需要将编译后的gdbserver上传至目标设备,其上传方式可以通过scp、ftp等。
目标设备作为gdb服务端,宿主机或者主机作为我们的客户端。

在待调试设备中找到gdbserver程序

/*cd到包含gdbserver的目录*/
./gdbserver 192.168.100.1:1234 ./program1 [参数1]
参数说明:192.168.100.1:目标设备的IP,可通过ifconfig等命令查看。1234:自定义绑定目标设备的端口号。program1 :目标设备中待调试的程序。

在这里插入图片描述

二、启动主机客户端gdb

在主机中找到aarch64-linux-gun-gdb程序所在的目录
在这里插入图片描述
启动主机gdb

./aarch64-linux-gun-gdb

在这里插入图片描述
gdb中以下命令来连接设备中的gdbserver

target remote 192.168.100.1:1234

在这里插入图片描述

连接上后,正常使用gdb命令进行调试。

三、gdb常见命令

  • 打断点
    • break *address ,示例:break *0x00346512
    • b *address ,示例:b *0x00346512
  • 查看所有断点
    • info breakpoints
  • 删除断点
    • delete [breakpoint-number],示例:delet 1
    • d [breakpoint-number],示例:d 1
  • 执行到断点或者程序结束
    • continue
    • c
  • 单步执行,进入函数内部
    • step
    • s
  • 单步执行,不进入函数内部
    • next
    • n
  • 执行到当前函数结束
    • finish
  • 查看所有寄存器的值
    • info registers
    • i r
  • 查看特点寄存器的值
    • info registers eax
    • i r eax
  • 查看指定内存的值(查看从地址 0x7fffffffe000 开始的16个字节的16进制值)
    • x/16bx 0x7fffffffe000
  • 显示调用栈信息
    • backtrace
    • bt

http://www.ppmy.cn/devtools/133284.html

相关文章

7 软件维护

软件维护 1、软件维护概念和分类1.1 软件维护概念1.1 软件维护分类完善性维护纠错性维护适应性维护预防性维护 2、软件维护注意事项3、软件维护技术3.1 程序理解3.2 软件再工程3.3 软件逆向工程 1、软件维护概念和分类 1.1 软件维护概念 IEEE/EIA 12207[ISO/IEC2008]中对软件…

LeetCode35:搜索插入位置

原题地址:. - 力扣(LeetCode) 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算…

泉州市工业和信息化局关于开展排查运维安全管理系统安全漏洞的通知

文章目录 引言附件1: 受影响版本和修复方案附件2:漏洞排查处置情况反馈表引言 接国家网络与信息安全信息通报中心通报,一款由北京圣博润高新技术股份有限公司研发的运维安全管理系统(俗称堡垒机)存在命令执行漏洞(CNVD-C-2024-781563、NVDB-CNVDB-2024768604)。攻击者可…

使用k8s管理应用以及java案例

使用k8s管理应用 制作镜像控制器管理podpod数据持久化创建service四层代理创建ingress规则对外发布应用日志与监控应用案例(因无开发代码,最终跑不起来)编写java代码编写 Dockerfile构建 Docker 镜像在 Kubernetes 上运行应用程序创建 Kubernetes 服务service创建in…

Android 如何实现不编译指定的apk,不加载系统应用

1.把Android.mk改为Android.mk_bak 2.删除当前Android.mk内容变为空mk 或者注释掉里面所有内容 3.以上方法存在些许问题,因为只是把当前的mk屏蔽了,但其他路径的类似应用也会编译进去。 在内置应用mk下添加需要覆盖的应用,这个比较全面&…

Oracle 23AI创建示例库

一、示例库介绍 多年来,Oracle 一直使用简单的数据库模式 SCOTT 及其两个突出的表 EMP 和 DEPT,用于文档和培训中的各种示例。但不少小伙伴并不知道如何创建这些示例数据,其实Oracle官方上就有提供对应的方法,本文就带领大家完成…

关于vue生命周期

父子组件生命周期执行顺序? v2 v3 父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted Vue2生命周期 Vue3生命周期 beforeCreate setup created created befor…

乐尚代驾十订单支付seata、rabbitmq异步消息、redisson延迟队列

账单信息 司机结束代驾之后,生成账单(包含账单信息和分账信息)司机发送账单给乘客乘客获取账单之后,进行支付 获取账单信息 order_bill表记录的账单信息,我们直接获取即可 Operation(summary "根据订单id获取…