我已按照 Android 开发人员页面上的步骤设置 CMake 项目来与一些本机代码交互。当我使用本机(决斗)调试器附加到正在运行的进程时,我得到
注意!未找到符号目录 - 请检查您的本机调试配置
在调试窗口输出中,我的断点永远不会被命中。如果我创建一个运行配置并启动它从 Android Studio 进行调试(如此处所示),它会正确找到符号并且调试器会命中我的断点。但是从运行配置启动调试速度较慢,有时我只想附加到已经运行的进程。
在 Android Studio 3.3 中附加到正在运行的进程时,有没有办法指定本机符号目录?似乎主动运行配置不适用于这种情况。
首先,确保您的项目对于“调试”和“发布”构建类型都是可调试的。 IE。检查以下标志是否设置为 true:
release {
debuggable true
}
debug {
debuggable true
}
然后,对于 C 和 C++ 项目,您可以在“调试器”选项卡中添加符号目录以及 LLDB 启动和后附加命令。为此,您可以使用类似于以下的按钮:
如果您想添加符号文件以向调试器提供在 Android Studio 外部生成的 C 或 C++ 信息,您可以添加一个或多个目录,如上所示。
从 Android Studio 中的调试器选项卡查看更多信息运行配置。
并且,还要检查附加本机调试符号,这可能更好地适用于您的情况。
我发现的一个解决方案是通过 LLDB 控制台添加符号。暂停正在运行的调试器并切换到 LLDB 选项卡:
(lldb) image list
<list of symbol images already loaded>
(lldb) image add "<path>\build\intermediates\cmake\debug\obj\armeabi-v7a\libmylib.so"
这仍然让我每次想要调试时都要进行大量的手动配置。我更喜欢一种在附加到现有进程时控制默认行为的方法。