在 Windows 上的 Visual Studio 2019 中调试 Xamarin Android C++ 代码时如何停止信号 SIGPWR、电源故障/重新启动

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

我无法调试 xamarin android 应用程序的 c++ 代码中的任何内容。我不断收到信号 SIGPWR,表示该信号上的线程和应用程序中断。

android c++ windows xamarin native
2个回答
1
投票

我尝试搜索解决我的应用程序的上述问题,但没有找到任何好的答案。经过一番努力后,我能够解决它。所以解决方案在下面的步骤中给出。

  1. 在 Windows 计算机上找到 gdb.exe。最有可能的是这里:C:\Microsoft\AndroidNDK64 ndroid-ndk-r16b\prebuilt\windows-x86_64 in

  2. 在gdb.exe所在目录下新建一个名为“.gdbinit”的文件。

  3. 在记事本中打开.gdbinit并在文件中添加4行和5行:

  4. 设置自动加载安全路径/

  5. 处理SIGXCPU SIG33 SIG35 SIG36 SIG37 SIG38 SIGPWR nostop noprint

  6. 现在创建一个名为“HOME”的系统环境变量,并将其值设置为 .gdbinit 的目录。这是 gdb.exe 所在的同一目录。

  7. 重新启动Visual Studio,现在这些信号将不再存在,我们可以轻松调试C++代码。

有关更多信息,请查看以下链接:

通过上面的链接,我可以更好地理解并解决我的问题。


0
投票

较新的 Android NDK 附带 LLDB 而不是 GDB。要在 LLDB 中解决此问题,请使用

process handle
:

process handle SIGXCPU -n true -p true -s false
process handle SIGPWR -n true -p true -s false

选项说明:

       -n <boolean> ( --notify <boolean> )
            Whether or not the debugger should notify the user if the signal is
            received.

       -p <boolean> ( --pass <boolean> )
            Whether or not the signal should be passed to the process.

       -s <boolean> ( --stop <boolean> )
            Whether or not the process should be stopped if the signal is
            received.
© www.soinside.com 2019 - 2024. All rights reserved.