gpt4 book ai didi

android - 调试 Android native C++ : activate breakpoint

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:03 26 4
gpt4 key购买 nike

我正在尝试使用 NDK 在 Android 设备上调试 C++ native 代码。

Android.mk 已经有了调试标志:

APP_OPTIM:= debug
LOCAL_CFLAGS := -DRAPIDXML_NO_EXCEPTIONS
LOCAL_CFLAGS += -g
LOCAL_CFLAGS += -ggdb
LOCAL_CFLAGS += -O1

我还尝试使用标志 -O0 而不是 -O1。

AndroidManifest.xml 也有 Debug模式:

     android:debuggable="true"

所以,我们开始吧...我在代码中放置了一些断点,以逐步观看它。去终端输入:

$ adb shell ps |grep packtpub
app_57 24084 117 467368 49136 ffffffff 00000000 S com.packtpub.app3D

然后运行调试:

$ ndk-gdb --verbose --force
...
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: /home/android-sdks/platform-tools/adb forward tcp:5039 localfilesystem:/data/data/com.packtpub.app3D/debug-socket
## COMMAND: /home/android-sdks/platform-tools/adb shell run-as com.packtpub.app3D lib/gdbserver +debug-socket --attach 1822
## COMMAND: /home/android-sdks/platform-tools/adb pull /system/bin/app_process ./obj/local/armeabi/app_process
Attached; pid = 1822
Listening on sockaddr socket debug-socket
Pulled app_process from device/emulator.
## COMMAND: /home/android-sdks/platform-tools/adb pull /system/lib/libc.so ./obj/local/armeabi/libc.so
Pulled libc.so from device/emulator.

应用程序启动并运行。但是没有出现断点。 (gdb) 提示似乎都不允许我设置命令。

我尝试了两种方法:从 Eclipse IDE 和使用命令行的控制台。同样的事情发生了。

关于如何发现缺失的内容以进行调试并使断点正常工作,有什么建议吗?

非常感谢所有意见和建议。


所以...我一直在努力解决 ndk-debug 未运行的原因。也许我遇到了一些可以阐明它的东西:

我在Android.mk中也添加了:

APP_MODULES := callbacks
APP_PLATFORM := android-14

在终端的命令行上:

$ android update project -p . --target android-14

它给出了信息:

Error: Target id 'android-14' is not valid. Use 'android list targets' to get the target ids.

然后我们在运行列表目标时获得输出:

$ android list targets
id: 1 or "android-15"
Name: Android 4.0.3
Type: Platform
API level: 15
...
id: 2 or "Google Inc.:Google APIs:15"

另一方面,只有当我输入“android-15”时,它才会在命令行上编译和构建,但它不会在具有“android-14”的设备(三星 Nexus)中运行。在 AndroidManifest.xml 中,它被设置为 14,以允许应用程序从 Eclipse IDE 编译、加载和运行在设备中:

<uses-sdk android:targetSdkVersion="14" android:minSdkVersion="14">

在 Eclipse IDE 中,它像 Android-14 一样编译和运行,没有任何提示。当被要求在 Eclipse IDE 上运行 ndk-debug 时,它也没有像我之前的帖子中提到的那样提示,但是 (gdb) 都没有出现。

但是,当我尝试在命令行上运行 ndk-debug 时,它会提示并显示它没有附加调试器:

$ ndk-gdb --verbose --force
...
Launched gdbserver successfully.
## COMMAND: /home/android-sdks/platform-tools/adb shell run-as com.packtpub.app3D lib/gdbserver +debug-socket --attach 7722
## COMMAND: /home/android-sdks/platform-tools/adb pull /system/bin/app_process ./obj/local/armeabi/app_process
Cannot attach to process 7722: Operation not permitted (1)
Pulled app_process from device/emulator.

ndk-gdb 不工作与目标版本有关吗?

是否有任何建议或解决方法可以修复它并可以使用 Activity 断点来调试 NDK?

提前致谢。

最佳答案

解决了在调试环境中安装 API 14 并创建一个完全作为 API 14 的新项目的问题。现在可以了。

关于android - 调试 Android native C++ : activate breakpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com