You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Android Studio中C++代码调试断点失效、显示汇编问题?

解决Android Studio中C++代码调试失效的问题

1. 修正Build Type与工具链配置

你自定义了customDebugType,但要确保编译配置和调试类型正确关联,同时替换已被弃用的GCC工具链为官方推荐的Clang:

buildTypes {
    debug {
        debuggable true
        minifyEnabled false
        externalNativeBuild {
            cmake {
                arguments "-DCMAKE_BUILD_TYPE=Debug", "-DANDROID_TOOLCHAIN=clang"
                cppFlags "-std=c++14"
            }
        }
    }
    customDebugType {
        debuggable true
        minifyEnabled false
        initWith debug
    }
}

2. 强制CMake生成调试符号

在项目的CMakeLists.txt中添加明确的调试符号生成配置,避免编译时丢失符号:

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
endif()

注意:不要在CMake中手动设置CMAKE_BUILD_TYPE为Release,否则会覆盖Gradle中的配置。

3. 验证SO文件的调试符号是否保留

解压生成的APK,找到lib/armeabi-v7a或arm64-v8a目录下的SO文件,用readelf工具检查是否包含调试段:

readelf -S your-lib.so | grep debug

如果输出中能看到.debug_info、.debug_line这类字段,说明符号未被剥离;若没有,检查packagingOptions是否生效,或是否有其他脚本在打包时主动剥离了符号。

4. 规范调试启动流程

  • 确保使用的是可调试的设备(模拟器、工程机或已Root的零售机,部分厂商零售机限制Native调试权限)
  • 选择Run > Debug 'app'启动调试会话,而非直接Run
  • 崩溃发生后,切换到Debug面板的Native标签页,查看对应线程的调用栈

5. 清除缓存重新构建

缓存异常可能导致配置不生效,执行以下操作彻底重置:

  • 点击File > Invalidate Caches... > Invalidate and Restart重启Android Studio
  • 在终端执行./gradlew clean清除构建缓存
  • 重新同步Gradle并构建项目

内容的提问来源于stack exchange,提问作者Ariel Malka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:11:08