我无法调试 xamarin android 应用程序的 c++ 代码中的任何内容。我不断收到信号 SIGPWR,表示该信号上的线程和应用程序中断。
我尝试搜索解决我的应用程序的上述问题,但没有找到任何好的答案。经过一番努力后,我能够解决它。所以解决方案在下面的步骤中给出。
在 Windows 计算机上找到 gdb.exe。最有可能的是这里:C:\Microsoft\AndroidNDK64 ndroid-ndk-r16b\prebuilt\windows-x86_64 in
在gdb.exe所在目录下新建一个名为“.gdbinit”的文件。
在记事本中打开.gdbinit并在文件中添加4行和5行:
设置自动加载安全路径/
处理SIGXCPU SIG33 SIG35 SIG36 SIG37 SIG38 SIGPWR nostop noprint
现在创建一个名为“HOME”的系统环境变量,并将其值设置为 .gdbinit 的目录。这是 gdb.exe 所在的同一目录。
重新启动Visual Studio,现在这些信号将不再存在,我们可以轻松调试C++代码。
有关更多信息,请查看以下链接:
通过上面的链接,我可以更好地理解并解决我的问题。
较新的 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.