ndk 15.2.4203891,我使用windows下的Android Studio编译了一个jin例子,在windows模拟器中运行程序,进行so库远程调试,遇到以下问题,请帮忙解决:
1、首先把sdk\ndk-bundle\prebuilt\android-x86\gdbserver\gdbserver adb push 到Android Studio 模拟器下的/data/local/tmp 中。
2、windows下的cmd用 sdk\ndk-bundle\prebuilt\windows-x86_64\bin\gdb.exe 进行远程调试。
步骤如下
一、模拟器中启动server:gdbserver :23946 --attach xxPID
二、在windows的cmd中输入:adb forward tcp:23946 tcp:23946
三、然后在windows的cmd中启动gdb:启动gdb后输入 "target remote 127.0.0.1: 23946"
四、然后在windows的cmd中同步so库符号文件,命令如下:
file F:\\AndroidStudioProjects\\ndk-build-test\\app\\build\\intermediates\\ndkBuild\\debug\\obj\\local\\x86\\libtest1.so符号文件同步成功。
然后运行list命令,能够打印出源文件内容,如下:(gdb) list
11 #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__))
12 #define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__))
13
14 extern "C"
15 JNIEXPORT jstring JNICALL
16 Java_com_x_lgj_ndk_1build_1test_MainActivity0907_OK(JNIEnv *env, jobject instance) {
17
18 std::string hello = "gghkkkkkkkkkkkkkkkk";
19 int i = 0;
20 while(1)
五、下断点成功,但是continue报错,如下:
(gdb) b test.cpp:23
Breakpoint 1 at 0x14fb3: file F:/AndroidStudioProjects/ndk-build-test/app/src/main/jni\test.cpp, line 23.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x14fb3
Command aborted.
(gdb)
六:删除断点后,执行continue命令又好使正常了,如下:
(gdb) delete 1
(gdb) c
Continuing.
这是咋回事??求助,多谢
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法