首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ndk-gdb - gdb.setup、putpkt、运行PID的问题

ndk-gdb - gdb.setup、putpkt、运行PID的问题
EN

Stack Overflow用户
提问于 2012-04-23 08:10:20
回答 1查看 2.8K关注 0票数 1

我已经用ndk-build构建了一个本地库,它在Android.mk中被标记为可调试。如果我进入cygwin shell并运行

代码语言:javascript
复制
cd (PROJDIR)
ndk-gdb --start --verbose

我得到了以下信息:

代码语言:javascript
复制
Android NDK installation path: /cygdrive/c/Android/android-ndk-r7b
Using default adb command: /cygdrive/c/Android/android-sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using ADB flags: 
Using auto-detected project path: .
Found package name: tiny.test2
ABIs targetted by application: armeabi
Device API Level: 15
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/tiny.test2/lib/gdbserver
Using gdb setup init: ./libs/armeabi/gdb.setup
Using toolchain prefix: /cygdrive/c/Android/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi
Found data directory: '/data/data/tiny.test2'
Found first launchable activity: .Test2Activity
Launching activity: tiny.test2/.Test2Activity
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell am start -n tiny.test2/.Test2Activity
Starting: Intent { cmp=tiny.test2/.Test2Activity }

## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
       Weird, this probably means one of these:

         - The installed package does not match your current manifest.
         - The application process was terminated.

       Try using the --verbose option and look at its output for details.

它没有达到gdb的调试提示。在第一次C++函数调用之前,我尝试在.java文件中使用断点启动它,然后当它在java断点处运行ndk-gdb时,它成功地找到了正在运行的PID 1977,通过端口5039连接到设备,并从设备中提取了libc.so,但随后获得了一批Error while mapping shared library sections: libxxxx.so: No such file or directory。在info sharedLibrary中找不到这些符号。

我已经根据另一个问题的建议将LOCAL_CFLAGS := -g -ggdb -O0添加到了Android.mk中,并从$(NDK_PATH)/build/core/build-binary.mk中删除了从.so文件中剥离额外内容的行。

如果有人知道这些错误的可能原因,请帮助。

谢谢

编辑: ndk-gdb告诉我‘这个GDB被配置为"--host-i586-mingw32msvc --target=arm-elf-linux"’就在‘之前(没有找到调试符号)’

这有什么意义吗?

EDIT2:从gdb运行share将返回所有Symbol file not found文件的.so列表。在我看来,我没有正确地生成符号文件,或者它们没有包含在搜索路径中。它们应该设置在哪里?

EDIT3:原来我遗漏了ndk-gdb文档中的一行重要内容-

代码语言:javascript
复制
   "The GDB prompt will be preceded by a long list of error messages,
   where gdb complains that it cannot find various system libraries
   (e.g. libc.so, libstdc++.so, liblog.so, libcutils.so, etc...)

   This is normal, because there are no symbol/debug versions of
   these libraries corresponding to your target device on your
   development machine. You can safely ignore these messages."

这不能解决问题,但它有助于了解这些不是错误。

EN

回答 1

Stack Overflow用户

发布于 2012-04-23 09:19:19

你有环境ANDROID_NDK_ROOT吗?这必须类似于Windows下的/cygdrive/c/Android/android-ndk-r7*。尝试添加要编译的DNK_DEBUG=1 ..喜欢: ndk-build DNK_DEBUG=1 -B V=1

另外,确保在libs/$(Target-ABI)/下有gdbserver和gdb.set。

希望能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10273318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档