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 源?