Android --gdb+gdbserver远程调试安卓so,断点报错问题。

ronallee 2017-09-18 03:48:52
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.


这是咋回事??求助,多谢
...全文
302 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronallee 2017-09-25
  • 打赏
  • 举报
回复
高人来帮忙解决哈,多谢
ronallee 2017-09-19
  • 打赏
  • 举报
回复
求助呀…………
ronallee 2017-09-18
  • 打赏
  • 举报
回复
求助哈,在线等待。多谢

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧