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

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

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

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

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

【问题讨论】:

    标签: android android-studio android-ndk


    【解决方案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"
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2016-04-06
      • 1970-01-01
      • 2016-03-02
      • 2012-10-05
      • 1970-01-01
      相关资源
      最近更新 更多