当前位置: 首页 > news >正文

Android设备:Linux远程lldb调试


更多内容:XiaoJ的知识星球


目录

      • 一、环境准备
        • 1.1 安装llvm/NDK
        • 1.2 开启lldb-server服务
        • 1.3 lldb连接lldb-server
      • 二、使用lldb调试Android native源码
        • 2.1 运行调试
        • 2.2 .lldbinit文件


下面介绍Android设备(Android手机为例),在Linux中远程lldb调试。

一、环境准备

1.1 安装llvm/NDK

安装工具,需要包含:

  • 1.lldb 和 lldb-server。

  • 2.clang交叉编译工具链。

请自行安装(建议使用android-ndk-r26c)

  • 下载解压NDK:https://developer.android.google.cn/ndk/downloads?hl=zh-cn

  • 指定版本NDK: https://github.com/android/ndk/wiki/Unsupported-Downloads

1.2 开启lldb-server服务

找到lldb-server:(例如如下目录)

android-ndk-r26c/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/lib/linux/aarch64/lldb-server

执行以下命令,将其push进手机,并开启。

$ adb push lldb-server /data/local/tmp/
$ adb shell 
$ cd /data/local/tmp
$ chmod 755 lldb-server
# $ ./lldb-server p --server --listen unix-abstract:///data/local/tmp/debug.sock
$ ./lldb-server platform --listen '*:1025' --server

保持当前终端不要关闭,进程会一直执行,这样lldb-server就启动了。

1.3 lldb连接lldb-server

打开另一个终端,执行以下命令,在ubuntu上使用lldb连接lldb-server

$ lldb
(lldb) platform list  # 查看lldb可以连接的平台
(lldb) platform select remote-android
(lldb) platform status # 查看平台状态
# (lldb) platform connect unix-abstract-connect:///data/local/tmp/debug.sock
(lldb) platform connect connect://:1025

当出现以下输出,表示连接成功。
在这里插入图片描述

二、使用lldb调试Android native源码

2.1 运行调试

(1)加载可执行文件,并运行:

(lldb) file path/demo.elf # 指定要调试的可执行文件
(lldb) breakpoint set -f main.cpp -l 57
(lldb) run

如果你需要添加额外的模块(例如动态链接库),可以使用:

(lldb) target module add /local/path/to/module
(lldb) target module add /local/path/to/another-module

(2)常用命令:

使用一些常用GDB命令调试即可。

2.2 .lldbinit文件

在 LLDB 中,也有类似 GDB 的 .gdbinit 的文件,叫.lldbinit 文件。

你可以在这个文件中设置别名、命令别名、环境变量、调试选项等。

例如:

# 设置环境变量
settings set target.env-vars MY_VAR=value
# 设置别名
command alias bt backtrace
# 设置命令别名
command alias ps print stack
# 设置断点
breakpoint set -n main
# 设置只读文件系统时的挂载选项
settings set target.load-cwd-lldbinit false

当你启动 LLDB 时,使用 -s 参数指定一个不同的初始化文件:

lldb -s /path/to/custom/lldbinit myprogram

这样,LLDB 会使用指定的初始化文件而不是默认的 .lldbinit 文件。


声明:资源可能存在第三方来源,若有侵权请联系删除!

http://www.lryc.cn/news/524961.html

相关文章:

  • 多层 RNN原理以及实现
  • [Computer Vision]实验三:图像拼接
  • 【Vim Masterclass 笔记22】S09L40 + L41:同步练习11:Vim 的配置与 vimrc 文件的相关操作(含点评课内容)
  • 5.9 洞察 OpenAI - Translator:日志(Logger)模块的 “时光记录仪”
  • 客户案例:电商平台对帐-账单管理(亚马逊amazon)
  • IP协议特性
  • Kubernetes入门学习
  • 支持向量机SVM的应用案例
  • Chrome 132 版本新特性
  • (5)STM32 USB设备开发-USB键盘
  • Linux 系统服务开机自启动指导手册
  • 分布式多卡训练(DDP)踩坑
  • Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)
  • C++17 新特性解析:Lambda 捕获 this
  • Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
  • Spring Boot 事件驱动:构建灵活可扩展的应用
  • IM系统设计
  • 华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包
  • ASP.NET Blazor托管模型有哪些?
  • PyTorch广告点击率预测(CTR)利用深度学习提升广告效果
  • PAT甲级-1017 Queueing at Bank
  • OneData体系架构详解
  • Gin 框架入门实战系列教程
  • 鸿蒙harmony json转对象(2)
  • M-LAG与E-trunk
  • 【面试常见问题】
  • Spring Boot Starter介绍
  • vue和reacts数据响应式的差异
  • OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
  • npm命令与yarn命令的区别