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

Posted

技术标签:

【中文标题】Android Studio 附加到进程未找到本机符号【英文标题】:Android Studio attach to process not finding native symbols 【发布时间】:2019-07-02 21:01:35 【问题描述】:

我已按照setting up a CMake project 上的 android 开发者页面上的步骤操作了一些本机代码。当我使用本机(决斗)调试器附加到正在运行的进程时,我得到 ​​p>

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

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

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

【问题讨论】:

【参考方案1】:

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

release 
    debuggable true


debug 
    debuggable true

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

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

查看更多来自 Android Studio 中的Debugger tab 运行配置

另外,请查看Attach native debug symbols,这可能更适合您的情况。

【讨论】:

它仍然没有找到符号。当您附加到现有进程时,我认为运行配置不适用。当我认为您想要“符号目录”时,您上面的图片还突出显示了“LLDB Post Attach Commands”选项卡。 糟糕,你是对的,我突出显示了错误的选项卡。对不起我的错误 将根文件夹添加到“符号目录”对我有用。【参考方案2】:

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

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

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

【讨论】:

以上是关于Android Studio 附加到进程未找到本机符号的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:如何附加 Android SDK 源?

Visual Studio 调试 —— 附加到进程

visualstudio2022无法启动附加到进程

调试不适用于 Android Studio 的 C++/本机库模块(使用 Cmake)

Android Studio外部本机构建预编译头

难以让 Visual Studio 2010 附加到远程进程