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

求助:IntelliJ中Android JNI调试失效,无法调试C++代码

解决IntelliJ中Android JNI调试失效的问题

我完全懂你的挫败感——明明官方说IntelliJ和Android Studio功能几乎一致,结果转过来JNI调试直接罢工,这对时效性要求高的项目来说太耽误事了。下面是我亲测有效的排查和修复步骤,帮你把Native调试功能找回来:

1. 先确认Native调试相关组件齐全

虽然IntelliJ默认带Android支持,但Native调试的核心组件可能没自动装全:

  • 打开File > Settings > Plugins,搜索Android Support和Android NDK Support,确保两者都已启用并更新到最新版本。
  • 再去File > Project Structure > SDK Location,核对NDK路径是否和你之前在Android Studio里用的一致,不同NDK版本很容易引发调试兼容性问题。

2. 重新创建Native调试的运行配置

之前在Android Studio里的配置迁移过来大概率不兼容,得重新做一遍:

  • 点击顶部运行配置的下拉框,选Edit Configurations...
  • 点+号新建Android App配置,切换到Debugger标签页
  • 在Debug type里选Hybrid(要同时调Java和Native)或者Native(只调C++)
  • 往下翻到Native Debugger区域,确保Use auto-detected debuggers被勾选,也可以手动指定NDK目录下的LLDB路径(一般在ndk/{版本号}/lldb里)
  • 保存配置后重启调试试试

3. 检查Native代码的构建调试符号

调试失效很多时候是因为构建时没生成调试符号:

  • 打开Module级别的build.gradle,在buildTypes > debug里确认添加了:
    externalNativeBuild {
        cmake {
            arguments "-DCMAKE_BUILD_TYPE=Debug"
            cppFlags "-g"
        }
    }
    
    如果用的是Android.mk,要确保LOCAL_CFLAGS包含-g,同时去掉-O2这类优化参数(优化会破坏调试符号)。
  • 执行Build > Clean Project再Rebuild Project,让Native代码重新生成带调试信息的库。

4. 手动触发LLDB加载Native库

你提到IntelliJ不像AS那样自动加载大量库,这可能是LLDB没attach到进程:

  • 先在Native调用前的Java代码处打个断点,程序停住后,打开View > Tool Windows > Debug,找到Debugger面板的Native标签
  • 点击Attach to process按钮,选中你的app进程,LLDB就会开始加载相关Native库,这时候再给C++代码打断点应该就能生效了
  • 如果还是不行,试试在JNI_OnLoad里加一行__android_log_print输出,等调试时看到这个输出后再设置断点,确保库已经被加载完成。

5. 调整IntelliJ的调试器默认设置

有时候默认配置会挡住Native调试:

  • 打开File > Settings > Build, Execution, Deployment > Debugger > Native,确保Auto-detect native libraries被勾选,同时Symbol directories要包含你的Native库构建输出目录(一般是app/build/intermediates/cmake/debug/obj)
  • 另外,别勾选过度的跳过选项,比如Skip synthetic methods这类,避免误跳过Native调用的入口。

其实JetBrains说的“全功能”更多是指核心能力,JNI调试这种细分场景下,旧项目迁移确实容易出现配置断层,重新走一遍配置流程基本都能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:31