【问题标题】:How to debug a shared library (.so) in VS2019 (NDK Projekt)如何在 VS2019 (NDK Projekt) 中调试共享库 (.so)
【发布时间】:2021-11-19 04:13:51
【问题描述】:

我在 Visual Studio 2019 中有一个 NDK 项目,它使用了多个共享库。

在包含 android_main 函数的项目中,我可以设置断点并毫无问题地使用它们。如果我在我的一个共享库 (.so) 中设置断点并启动调试器,我会收到以下消息:

当前不会命中断点。包含此断点的模块尚未加载或无法获取断点地址。

如何加载缺失的符号?

我正在使用平台工具集 Clang 5.0


到目前为止我尝试了什么:

通过这个命令我证明了符号是存在的:

llvm-nm -D libMySharedLib.so

在模块窗口中(在调试模式下)我可以看到为我的 .so 模块加载了符号。

我猜错了:

使用 NDK 时,通常会在删除调试信息时出现此类问题。还有一个选项可以禁用此行为,在 Android Studio 中称为“donotstrip”。但我在 Visual Studio 上。

【问题讨论】:

标签: visual-studio android-ndk shared-libraries breakpoints debug-symbols


【解决方案1】:

显然,在 Visual Studio 中,启动调试器时,相应的共享库 (.so) 项目必须设置为“启动项目”。仅到达当前启动项目的断点或 .cpp 文件中包含的断点,这些文件又是相应启动项目的一部分。这当然不是很舒服,如果这里有人知道更好的解决方案,相应的评论会很有帮助。

无论如何,如果要启动共享库项目,则必须在“配置属性”->“调试”->“要启动的包”下设置.apk文件的适当路径和名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多