Noa*_*oam 7 android android-ndk
我正在将一个复杂的C应用程序移植到Android,作为一个SO库,用瘦java层包装.经过几个小时的麻烦,我在Android下编译代码,但当然,应用程序崩溃:(
环顾四周后,我明白在Android下调试C应用程序的唯一方法是通过gdb.既然我对gdb没有很多经验,那么任何人都可以分享一些见解吗?
任何人都有Windows下的gdb教程:)?
谢谢
对于更新版本的NDK(我使用的是r7c),您可以通过构建调试版本
android:debuggable="true"标记添加到<Application>标记中AndroidManifest.xmlndk-build与NDK_DEBUG=1(与UNIX外壳NDK_DEBUG标志不是必要的,如果运行NDK,建立)在Windows上,事情变得有点棘手因为使用ndk-gdb,你仍然需要从NDK r7c 开始使用bash(或cygwin),但是ndk-build如果你使用任何预先构建的静态库,在cygwin bash中运行会遇到权限问题
我在Windows机器上的解决方案是
android:debuggable="true"标记添加到<application标记中AndroidManifest.xml(与上面相同)ndk-build使用NDK_DEBUG=1ndk-gdb 为了快速初步调查本机库,使用一个按钮创建一个简单的活动来触发库输入功能,并loadLibrary在活动中如下:
class MyActivity extends Activity {
static {
System.loadLibrary("mylibrary");
}
/* other functions like onCreate, etc... */
public native void libfunc();
public void onClick(View v){
libfunc();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在gdb启动时,实际加载了有问题的库,但在程序崩溃之前,您仍然可以有时间设置断点等; 当您完成设置调试器时,在(gdb)提示符下键入continue(或只是' c'),然后点击按钮启动崩溃程序并快乐调试...
| 归档时间: |
|
| 查看次数: |
10566 次 |
| 最近记录: |