Visual Studio-Android-GDB意外退出,退出代码为-1073741571(0xC00000FD):加载符号时

问题描述 投票:0回答:1

我在Visual Studio 2019 Community Edition中针对Android设置了C ++ gradle应用。我正在使用NDK 20(Microsoft的Android SDK回购中的最新版本)。

此应用由几个.so库(SDL2,SDL2_image,SDL2_ttf,WolfSSL,MyGameCode,MyGameLibrary,MiscellaneousExternalDependencies.a)组成,并且似乎都可以正确编译和运行。我遇到的问题是附加一个断点,并看到GDB试图为关联的.so(在这种情况下,我的游戏代码特别是)加载符号。

我进行了一些测试,发现如果我剥离所有游戏代码,则可以得到断点,只需使用我的库和所有其他依赖项即可。我还进行了测试,发现包括我的大多数游戏文件仍然可以运行。但是,我大约有10个文件,如果删除它们,一切似乎都可以正常加载。当我有一个精简版本的项目可以加载断点时,加载符号大约需要42秒。

这似乎是项目中的全部符号,而不是在应用程序生存期内运行的任何特定代码,因为我指定了C ++的主要功能,该功能不会加载我的任何游戏代码,而仅运行简单的SDL2测试并只需更改即可我可以重现或消除GDB崩溃的项目中包含的文件数量。

我应该注意,我的项目在没有连接调试器的情况下似乎运行良好,并且可以看到我试图设置断点的C ++模块的输出。我遇到的问题仅限于尝试连接GDB和通过Visual Studio访问断点。到那时,我得到了在符号加载过程中似乎是堆栈溢出(或者可能是超时?)的信息。

我的问题在这里有几点要点:

  • GDB是否有某种符号限制?
    • [如果是这样,是否有一种方法可以在Visual Studio中的构建过程中从最终的“ .so”中删除未使用的符号?我想使构建过程易于执行。
    • 如果没有,我可以用.so或.a文件以某种方式分解项目来解决此问题吗?如果这样做的话,目前看来并没有什么不同,所以更多的建议将不胜感激!
  • Visual Studio的GDB包装器和Android Emulator是否允许我增加超时时间?如果我可以在200秒左右指定它,那肯定是足够多的时间来加载项目的.so符号。
  • 是否还有其他可能的解释来解决这种以合理的方式解决的加载符号崩溃的问题?

基本上,我不知道为什么在为我的.so文件加载符号期间它崩溃了>>

我在这里提供了更多详细信息,包括指向我的项目和确切的测试方法的链接,但是此问题的全部内容在本文中。

https://developercommunity.visualstudio.com/content/problem/898890/gdb-exited-unexpectedly-with-exit-code-1073741571.html

我在Visual Studio 2019 Community Edition中针对Android设置了C ++ gradle应用。我正在使用NDK 20(Microsoft的Android SDK回购中的最新版本)。这个程序是由几个.so ...

c++ visual-studio android-ndk gdb clang
1个回答
0
投票

事实证明,将我的Microsoft托管NDK版本20.0.5594570中的gdb.exe和gdb-orig.exe文件替换为我从此处下载的NDK 21下载得到的文件,解决了该问题(在撰写本文时,r21):[ C0]

© www.soinside.com 2019 - 2024. All rights reserved.