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

时间:2019-02-08 15:20:41

标签: android android-studio android-ndk

我已按照setting up a CMake project上Android开发人员页面上的步骤操作,以与某些本机代码交互。当我使用本机(决斗)调试器附加到正在运行的进程时,我得到

  

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

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

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

2 个答案:

答案 0 :(得分:0)

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

release {
    debuggable true
}

debug {
    debuggable true
}

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

enter image description here

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

Debugger tab的Android Studio 运行配置中查看更多信息。

此外,还要检查Attach native debug symbols,这可能会更适合您的情况。

答案 1 :(得分:0)

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

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

这仍然使我每次调试时都要进行很多手动配置。我希望有一种方法可以在连接到现有进程时控制默认行为。