1. adb root
手机需要rooted,并且开发者选项中设置adb可以获得root权限;
root access is disabled by system setting - enable in settings -> development options
2. ndk-build 设置
ndk-build NDK_DEBUG=1
V=1
Android.mk : LOCAL_CFLAGS := -g
(there should be gdb.setup gdbserver files under the libs/armeabi after ndk-build)..
3. adb shell
su
#am start -n com.xxx.xxx/.MainActivity
#ps |grep -i xxx
#gdbserver :5039 --attach your_process_id
4.
$adb forward tcp:5039 tcp:5039
$/Users/xxx/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-gdb
5.
(from the libs/armeabi/gdb.setup file, get the following path)
(gdb)set solib-search-path /Users/xxxx/obj/local/armeabi-v7a
(gdb)directory /path/to/your/project's all source/directory
(gdb)target remote :5039
(gdb) bt full
(gdb) set logging on
references:
1. http://www.bobbog.com/archives/24
2. http://wiki.debian.org/HowToGetABacktrace
3. http://www.kandroid.org/online-pdk/guide/debugging_gdb.html
分享到:
相关推荐
生成的库通常命名为`lib<something>.so`格式,并且需要包含JNI的入口点函数。 2. **自动集成共享库**:一旦生成了共享库,NDK会自动将其复制到应用工程的适当位置,以便在构建最终的`.apk`文件时自动包含这些库。 ...
- **调试支持**:NDK提供了调试工具,可以通过GDB进行远程调试,并提供了尽可能多的符号表信息以方便调试本地代码。 - **跨平台工具**:包括编译器、链接器等工具,可以在多种操作系统(Linux、Mac OS X和Windows)...
### Android NDK开发流程 #### 一、简介 在移动应用开发领域,Android平台因其开放性和灵活性而备受开发者青睐。为了充分利用硬件性能并实现高性能计算,Android提供了NDK(Native Development Kit)工具集,允许...
- 在主机上安装Android NDK,它包含了适用于Android的GDB版本。 - 使用NDK中的`arm-linux-androideabi-gdb`(或其他架构对应的版本),配置GDB指向目标设备的IP地址和之前设置的端口号,如:`target remote ...
对于原生代码的调试,可以使用NDK自带的gdbserver和gdb进行远程调试,或者使用Android Studio集成的NDK调试功能。 总的来说,"Android so加载深入分析.pdf"将带领读者深入理解Android系统如何处理和利用原生代码,...
7. **调试与优化**: 使用NDK和JNI时,可以通过NDK提供的工具如gdb进行远程调试,也可以利用NDK的性能分析工具来优化本地代码的性能。 通过"MyJni"这个案例,开发者可以学习如何在Android应用中有效地运用JNI技术,...
- **调试技巧**:如何使用ndk-gdb或者Android Studio的NDK调试功能,定位和修复与本地代码相关的错误。 - **64位支持**:自Android Lollipop开始,系统鼓励支持64位架构。开发者需要考虑如何处理32位和64位库的兼容...
总之,ijkplayer是一个强大且灵活的多媒体播放解决方案,其核心组件包括libijkffmpeg.so、libijkplayer.so和libijksdl.so,它们共同协作实现对各种音视频格式的播放,并能适配Android平台上的多种硬件架构。...
- **调试**:使用NDK-GDB或Android Studio的远程调试功能来调试C++代码。 - **安全**:避免在原生代码中处理敏感数据,因为它们可能更容易受到内存安全攻击。 通过这个过程,你已经成功创建并运行了你的第一个NDK...
总的来说,调试Android源码中的C++代码需要对Android系统有一定的了解,同时也需要熟悉Eclipse的调试工具和NDK的相关工作原理。通过以上步骤,开发者可以更有效地定位和解决问题,提升开发效率。
4. **原生库的创建和链接**:学习创建静态库(.a或.lib)和动态库(.so或.dll),理解共享库和静态库的区别,并知道如何在Android项目中引用这些库。 5. **JNI函数调用**:在Java代码中调用C++函数,以及在C++中...
9. **调试技巧**:使用NDK和JNI时,调试会变得复杂,可能需要利用NDK提供的NDK-gdb工具或者Android Studio的远程调试功能。 10. **安全考量**:由于本地代码可以直接访问硬件,因此在使用JNI时要特别注意安全,防止...
7. **构建流程**:使用Android.mk或CMakeLists.txt文件定义构建规则,通过NDK的`ndk-build`或CMake命令进行编译、链接和生成最终的.so(共享库)或可执行文件。 8. **注意事项**:编译时需考虑Android的ABI...
7. **调试本地库**:调试本地库通常比调试Java代码更复杂,开发者可能需要使用GDB(GNU Debugger)或其他调试工具,配合NDK提供的功能来追踪和调试C/C++代码。 8. **安全与性能**:使用本地库可以提高性能,但也...
需要在Android.mk或CMakeLists.txt文件中配置编译选项,将本地库编译为适用于不同架构的.so文件,并将其添加到APK的`lib`目录下。然后在Android Studio的`build.gradle`文件中配置NDK支持。 9. **调试JNI** 调试...
- 调试JNI代码可能比较复杂,可以使用NDK提供的工具(如ndk-gdb)来进行调试。 - 由于涉及不同语言之间的交互,需要注意数据类型转换和内存管理的问题。 #### 结论 JNI为Android开发者提供了一种强大的方式来实现...