返回信息流需要在Android应用中调用Cpp文件处理一些后台数据。
在Eclipse+CDT+NDT+JNI+cygWin下进行调试的时候,发现无法进入Cpp代码部分进行调试。
cygwin下的用ndk-gdb命令查看如下
$ ndk-gdb --verbose --force
Android NDK installation path: /cygdrive/d/AndroidDev/android-ndk-r8d
Using default adb command: /cygdrive/d/AndroidDev/adt-bundle-windows-x86/sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags:
Using auto-detected project path: .
Found package name: com.example.helloworld
ABIs targetted by application: armeabi
Device API Level: 15
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Using gdb setup init: ./libs/armeabi/gdb.setup
Using toolchain prefix: /cygdrive/d/AndroidDev/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/com.example.helloworld/lib/gdbserver
Found data directory: '/data/data/com.example.helloworld'
Found running PID: 28907
Killing existing debugging session
## COMMAND: adb_cmd shell kill -9 29021
/system/bin/sh: kill: 29021: Operation not permitted
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/com.example.helloworld/debug-socket
## COMMAND: adb_cmd shell run-as com.example.helloworld lib/gdbserver +debug-socket --attach 28907
Cannot attach to lwp 28907: Operation not permitted (1)
Exiting
## COMMAND: adb_cmd pull /system/bin/app_process obj/local/armeabi/app_process
3205 KB/s (9848 bytes in 0.003s)
Pulled app_process from device/emulator.
## COMMAND: adb_cmd pull /system/bin/linker obj/local/armeabi/linker
2416 KB/s (39592 bytes in 0.016s)
Pulled linker from device/emulator.
## COMMAND: adb_cmd pull /system/lib/libc.so obj/local/armeabi/libc.so
6265 KB/s (282304 bytes in 0.044s)
Pulled libc.so from device/emulator.
eclipse中debug后会出现如图所示的样子
eclipse中的console窗口会出现如下信息:
D:\AndroidDev\workspace\HelloWorld\obj\local\armeabi\gdb2.setup:3: Error in sourced command file:
obj/local/armeabi/app_process: No such file or directory.
Reading symbols from D:\AndroidDev\workspace\HelloWorld\obj\local\armeabi\app_process...done.
WARNING: no debugging symbols found in D:\AndroidDev\workspace\HelloWorld\obj\local\armeabi\app_process.
Either the binary was compiled without debugging information
or the debugging information was removed (e.g., with strip or strip -g).
Debugger capabilities will be very limited.
For further information: http://wiki/Main/GdbFaq#No_debugging_symbols_found
89-gdb-set confirm off
89^done
90-gdb-set width 0
(gdb)
90^done
(gdb)
91-gdb-set height 0
91^done
(gdb)
92-interpreter-exec console echo
92^done
(gdb)
93-gdb-show prompt
93^done,value="(gdb) "
(gdb)
94-gdb-set auto-solib-add on
94^done
95-gdb-set stop-on-solib-events 0
(gdb)
95^done
(gdb)
96-gdb-set stop-on-solib-events 1
96^done
(gdb)
97-target-select remote localhost:5039
97^error,msg="Remote communication error. Target disconnected.: No error."
(gdb)
98-gdb-exit
98^exit
这是一条镜像帖。来源:北邮人论坛 / java / #24269同步于 2013/1/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]菜鸟求助,关于Java+Cpp调试,Android环境
ifay
2013/1/22镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
感觉似乎和你系统的权限有些关系:看这几句
## COMMAND: adb_cmd shell kill -9 29021
/system/bin/sh: kill: 29021: Operation not permitted
## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/com.example.helloworld/debug-socket
## COMMAND: adb_cmd shell run-as com.example.helloworld lib/gdbserver +debug-socket --attach 28907
Cannot attach to lwp 28907: Operation not permitted (1)
这几个地方都出现了操作权限被拒绝的问题~
-------------------------------------------------------------------------------------------------------------------------------------------
另外你还应查看下pull出来的app_process、linker和libc.so是否都放到了指定路径,并且所在用户组是否有执行权限~如果没有的话你还需要chmod一下~
后边的这一行console中报出的error就应该是这个问题造成的:
D:\AndroidDev\workspace\HelloWorld\obj\local\armeabi\gdb2.setup:3: Error in sourced command file: obj/local/armeabi/app_process: No such file or directory. Reading symbols from D:\AndroidDev\workspace\HelloWorld\obj\local\armeabi\app_process...done.
有可能是相对路径拼接出错了~也有可能就是没有执行权限造成的
终于有大牛关注了,泪流满面……
可能有路径的问题,被正反斜杠搞得头大,不管怎么试,都说找不到文件。
配置调试环境配置两天了,想试试别的方式。
请问你一般如何调试Android程序中的native代码呢?有没有比较简单的方法?
【 在 tonyjansan 的大作中提到: 】
: 感觉似乎和你系统的权限有些关系:看这几句
: ## COMMAND: adb_cmd shell kill -9 29021
: /system/bin/sh: kill: 29021: Operation not permitted
: ...................
前段时间一直是在里面各种什么log什么打印出来的= =..感觉特别蛋疼= =
【 在 ifay 的大作中提到: 】
: 终于有大牛关注了,泪流满面……
: 可能有路径的问题,被正反斜杠搞得头大,不管怎么试,都说找不到文件。
: 配置调试环境配置两天了,想试试别的方式。
: ...................
我最终也用log了……感觉比配置gdb爽多了……
【 在 buptxrc 的大作中提到: 】
: 前段时间一直是在里面各种什么log什么打印出来的= =..感觉特别蛋疼= =