如何在VS2019 (NDK Projekt)中调试共享库(.so)



我有一个NDK项目inVisual Studio 2019它使用了几个共享库。

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

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

如何加载缺失的符号?

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


我试过了:

用这个命令我证明了符号的存在:

llvm-nm -D libMySharedLib.so

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

我猜错了:

对于NDK,当调试信息被剥离时,通常会出现这样的问题。还有一个选项可以禁用此行为,称为"donotstrip"在Android Studio中。但是我用的是Visual Studio。

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

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

最新更新