如何解决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
相关产品推荐
相关产品推荐

