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

如何在Eclipse中通过LAN远程调试Android JNI的C++代码

嘿,我刚好折腾过类似的场景,给你整理一套完整的远程调试步骤,帮你摆脱只能打日志的窘境:

1. 先搞定Android设备的网络调试连接
  • 首先确保你的Android设备和开发电脑在同一个LAN网段,能互相ping通(避免跨网段的路由问题)
  • 开启设备的调试权限:
    • 打开开发者选项(连续点击版本号几次),开启USB调试;如果是Android 10及以上,直接开无线调试;旧版本的话,先连USB执行adb tcpip 5555,断开USB后用adb connect <设备IP>:5555把设备连到电脑的adb服务
  • 验证连接是否成功:执行adb devices,能看到你的设备IP就行
2. 配置Eclipse的C++远程调试环境
  • 先确认Eclipse装了**CDT(C/C++开发工具)**插件,没装的话去Eclipse Marketplace搜一下安装就行
  • 把你的C++项目导入Eclipse,右键项目 → Debug As → Debug Configurations
  • 在左侧列表找到C/C++ Remote Application,右键新建一个调试配置:
    • Main标签页:
      • 点击Browse选中你的C++项目
      • 点击Connection区域的New,选择TCP/IP连接类型,输入设备的LAN IP,端口先填5005(后面要对应)
    • Debugger标签页:
      • 调试器类型选gdbserver
      • 在GDB Command里指定对应你设备架构的gdb路径,比如arm64架构的话,路径大概是<你的NDK路径>/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android-gdb
      • 切换到Remote子标签,勾选Use remote target,把Remote host设为设备IP,Remote port填5005
3. 在Android设备上启动gdbserver
  • 先把你的C++共享库(注意是.so,你说的.o应该是编译中间文件,最终要打包成.so)推到设备的可读写目录,比如/data/local/tmp/:
    adb push <你的.so文件路径> /data/local/tmp/
    
  • 登录设备shell:adb shell,如果需要root权限就执行su
  • 找到你的app进程ID:用ps | grep <你的app包名>,或者直接在Android Studio的Logcat里找进程ID
  • 启动gdbserver,关联进程并监听端口:
    gdbserver :5005 --attach <你的app进程ID>
    
    执行完后会看到类似Listening on port 5005的提示,说明gdbserver已经在等连接了
4. 启动Eclipse的远程调试
  • 回到Eclipse的Debug Configurations窗口,选中刚才新建的配置,点击Debug
  • 等几秒,Eclipse就会和设备上的gdbserver建立连接,之后你就可以像调试本地C++代码一样:设置断点、单步执行、查看变量值、调用栈,完全不用依赖日志了
关键注意事项
  • 编译C++代码时一定要加调试参数:编译选项里加上-g,不要开优化(比如-O2这类参数要去掉),否则断点会失效或者变量显示异常
  • 如果连接失败,检查设备的防火墙(有些定制ROM会拦截端口),或者换个端口试试(比如5006)
  • 如果你用的是新版NDK,gdb可能被lldb替代,那可以用lldb-server调试:在设备上执行lldb-server platform --listen *:5005 --server,然后在Eclipse里把调试器换成lldb就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:28:54