Android Studio 附加到进程找不到本机符号

问题描述 投票:0回答:3

我已按照 Android 开发人员页面上的步骤设置 CMake 项目来与一些本机代码交互。当我使用本机(决斗)调试器附加到正在运行的进程时,我得到

注意!未找到符号目录 - 请检查您的本机调试配置

在调试窗口输出中,我的断点永远不会被命中。如果我创建一个运行配置并启动它从 Android Studio 进行调试(如此处所示),它会正确找到符号并且调试器会命中我的断点。但是从运行配置启动调试速度较慢,有时我只想附加到已经运行的进程。

在 Android Studio 3.3 中附加到正在运行的进程时,有没有办法指定本机符号目录?似乎主动运行配置不适用于这种情况。

android android-studio android-ndk
3个回答
3
投票

首先,确保您的项目对于“调试”和“发布”构建类型都是可调试的。 IE。检查以下标志是否设置为 true:

release {
    debuggable true
}

debug {
    debuggable true
}

然后,对于 C 和 C++ 项目,您可以在“调试器”选项卡中添加符号目录以及 LLDB 启动和后附加命令。为此,您可以使用类似于以下的按钮:

如果您想添加符号文件以向调试器提供在 Android Studio 外部生成的 C 或 C++ 信息,您可以添加一个或多个目录,如上所示。

从 Android Studio 中的调试器选项卡查看更多信息运行配置

并且,还要检查附加本机调试符号,这可能更好地适用于您的情况。


1
投票

我发现的一个解决方案是通过 LLDB 控制台添加符号。暂停正在运行的调试器并切换到 LLDB 选项卡:

(lldb) image list
       <list of symbol images already loaded>
(lldb) image add "<path>\build\intermediates\cmake\debug\obj\armeabi-v7a\libmylib.so"

这仍然让我每次想要调试时都要进行大量的手动配置。我更喜欢一种在附加到现有进程时控制默认行为的方法。


0
投票

Android Studio Dolphin Gradle 版本 8 插件 gradle 版本 7.3.1

  1. 前往: {应用程序文件夹}/app/build/intermediates/merged_native_libs/release/out/lib

  2. 选择目录下的所有文件夹,创建压缩文件夹。

  3. 将压缩文件夹上传到folders to compressplaystore中的应用程序包。

© www.soinside.com 2019 - 2024. All rights reserved.