Android C++ 开发调试 & LLDB 工具使用

Android 调试 C++ 相关代码配置

为了调试 c++ 的代码,我们需要确保打出来的 so 库是带调试信息的。几个步骤如下,如果 SO 中没有带调试信息,可以使用下面的步骤排查:

  1. 在 Cmake 中设置构建类型,确保打出来的 so 是debug 的,带调试信息。
set(CMAKE_BUILD_TYPE "Debug") 
  1. 如果 so 被 strip 了的话,设置 app 不strip so
  packagingOptions{
   
        doNotStrip "*/arm64-v8a/*.so"
  }
  buildTypes {
   
        debug {
   
            externalNativeBuild{
   
                cmake {
   
                    // 修改点2 : 可以改,一般都不需要
                    cppFlags += "-g" // 增加调试信息
                }
            }
        }
    }

查看 so 是否被 strip 的方式,终端输入下面的命令,就会输出 so 的状态,是否是 strip 的:

file path/xxx.so
  1. 如果是 cmake 调试别的 aar 中的so ,则需要做下面的操作:
  • 本地打包 aar ,打包的 aar 的操作需要满足 上面 1,2,修改项目中依赖的外部 aar 的路径。如果不打包 aar ,联编调试,也可以,步骤类似,只不过需要修改下 so,头文件的路径就可以
  • 修改 cmake link 的so 改成我们打包的没有 strip 的 so
    link 指定本地的 so 的方式有下面两种任选其一:

这里假设我们的 so 叫 libtest.so

方式一:
1. add_library(test SHARED IMPORTED) // 添加需要引用的 so 
2.   set_property(
            TARGET
            test
            PROPERTY
            IMPORTED_LOCATION
            path/libtest.so
    )
3. target_link_libraries(targetsoname  test)
方式二:
1. add_library(test INTERFACE) // add test so
2. target_link_libraries(test INTERFACE path/libtest.so) // 指定 test so 的路径
3. target_link_libraries(targetsoname PRIVATE test)
<think>好的,我现在需要帮助用户了解如何在Android环境中配置和使用LLDB调试器。首先,我应该回顾用户提供的引用内容,特别是引用1、2和3,这些内容提到了LLDBAndroid Studio中的集成,以及一些配置方法。用户可能希望从基础步骤开始,比如环境准备、配置过程、调试方法等。 首先,我需要确认用户的环境需求,比如Android Studio的版本、NDK的安装情况,以及是否已经配置了gradle-experimental插件。根据引用1,LLDB需要从SDK Tools中下载最新版本,并配合Android Studio和gradle-experimental使用。这可能涉及到SDK Manager中的安装步骤。 接下来,配置项目以支持LLDB调试。根据引用2,用户需要在运行/调试配置中选择使用LLDB,并设置相关的启动命令和符号目录。这里可能需要修改build.gradle文件,启用调试符号,并确保NDK版本正确。此外,引用3提到用户可能更推荐使用VSCode或Clion,但用户的问题明确是关于Android环境的,因此需要集中在Android Studio的配置上。 调试步骤方面,需要指导用户如何设置断点,启动调试会话,以及使用LLDB的命令行界面。可能还需要解释一些常用的LLDB命令,比如打印变量、查看调用栈等。同时,要提醒用户关于符号目录和连接后命令的设置,如引用2所述。 另外,用户可能遇到常见问题,比如无法断点命中或符号加载失败。需要根据引用中的信息,检查NDK版本、符号路径是否正确,以及调试器权限是否足够。可能还需要建议用户参考官方文档或社区资源,如引用1和2提到的内容。 最后,生成相关问题,帮助用户进一步学习,比如优化调试效率的方法,与GDB的区别,或结合其他工具如VSCode使用LLDB。根据引用3,可以提及替代工具,但主要回答应围绕Android Studio的环境。 总结步骤:环境准备→配置项目→调试步骤→常见问题→相关资源。确保每个步骤清晰,引用正确,并符合用户提供的格式要求,如行内公式使用$...$,独立公式用$$...$$,但这里可能不需要数学公式,重点在配置和命令。同时,保持回答结构清晰,使用中文,并在引用处添加标识符如[^1]。</think>### Android环境中使用LLDB调试器配置与使用教程 #### 一、环境准备 1. **安装Android Studio及NDK** - 确保已安装Android Studio(推荐最新稳定版) - 通过SDK Manager安装NDK和LLDB工具: **路径**:`Tools > SDK Manager > SDK Tools > 勾选NDK和LLDB` ![SDK Manager配置示例](https://example.com/sdk-manager-lldb.png)(注:此处为示意图) 2. **项目配置** - 在`build.gradle`中启用调试符号与LLDB支持: ```gradle android { defaultConfig { externalNativeBuild { cmake { arguments "-DCMAKE_BUILD_TYPE=Debug" } } } } ``` #### 二、配置调试流程 1. **创建调试配置** - 点击`Run > Edit Configurations`,选择`Android Native`类型 - 在`Debugger`选项卡中选择`LLDB`,并配置符号目录(如`.so`文件路径)[^2] - 设置启动命令(例如设置断点): ``` breakpoint set --name main ``` 2. **附加到进程调试** - 启动应用后,点击`Run > Attach Debugger to Android Process` - 选择目标进程并勾选`Show all processes`以查看Native进程 #### 三、调试操作指南 1. **基础命令** - 查看变量:`frame variable [变量名]` - 断点管理: ```bash breakpoint set --file test.cpp --line 20 # 设置断点 breakpoint delete 1 # 删除断点 ``` - 单步执行:`next`(跳过函数)或`step`(进入函数) 2. **查看调用栈** - 输入`bt`(backtrace)可查看当前线程的调用栈 #### 四、常见问题与解决 1. **断点未命中** - 检查NDK版本是否兼容(推荐≥r21) - 确认`.so`文件包含调试符号(编译时添加`-g`标志) 2. **符号加载失败** - 在LLDB配置中手动添加符号路径: ```bash settings set target.symbol-path /path/to/symbols ``` #### 五、相关工具与扩展 - **VSCode + LLDB插件**:提供更友好的调试界面(如内存查看、可视化变量跟踪)[^3] - **Clion**:适合复杂C/C++项目的跨平台调试(需配合Android项目配置) ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值