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

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.kler.cn/a/515822.html

相关文章:

  • [论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
  • 双指针+前缀和习题(一步步讲解)
  • 3.CSS的背景
  • 如何实现网页不用刷新也能更新
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • 白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)
  • Avalonia:C# 跨平台桌面应用的优秀选择
  • Android Audio音频系统
  • solidity基础 -- 存储类型
  • 快速入门Flink
  • 电子电气架构 --- 智能电动汽车电子与其软件架构
  • 隐藏php版本信息x-powered-by
  • 【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API
  • 如何提升flink的处理速度?
  • 解决 VMware Workstation Pro 中 Linux 虚拟机无法拖放文件及共享文件夹挂载问题
  • 基于 WPF 平台实现成语游戏
  • 深入理解 Spring 的 Lazy Loading:原理、实现与应用场景
  • 【HeadFirst系列之HeadFirst设计模式】第3天之观察者模式
  • 激光雷达和相机早期融合
  • 利用现有模型处理面部视频获取特征向量(1)
  • # [Unity基础] 游戏物体与组件的关系
  • 【IEEE Fellow 主讲报告| EI检索稳定】第五届机器学习与智能系统工程国际学术会议(MLISE 2025)
  • Nginx 与后端服务的集成配置
  • 文本文件打印类库(C#)
  • The Surprising Effectiveness of Test-Time Training for Abstract Reasoning
  • 【设计模式-行为型】状态模式