SIG33调试本机Android时
我正在使用Android Studio调试一个用C++编写的NativeActivity应用程序SIG33调试本机Android时,android,c++,debugging,android-ndk,native,Android,C++,Debugging,Android Ndk,Native,我正在使用Android Studio调试一个用C++编写的NativeActivity应用程序 在C++代码中,我在安卓IDIN主()/Cuth>中所做的第一件事情是等待调试器附加10秒钟。在“调试”窗口中,我看到: Now Launching Native Debug Session 几秒钟后 Debugger attached to process 28458 然后,在它连接之后,调试器立即停止,并发出一个信号: Signal: 33 (signal SIG33) 我按下“恢复程序”
在C++代码中,我在
Now Launching Native Debug Session
几秒钟后
Debugger attached to process 28458
然后,在它连接之后,调试器立即停止,并发出一个信号:
Signal: 33 (signal SIG33)
我按下“恢复程序”,然后我一次又一次地收到相同的信号7-8次。之后,程序按预期继续运行,附加了调试器,我可以在断点处停止它
那个信号是什么意思?我怎样才能预防它 信号33由仿生公司内部用于回溯设施 看 有关、和的信息,请参见
\uu SIGRTMIN
的定义
我认为SIG33是由gdb引起的,gdb没有正确地忽略它。SIG33被用来表示LLDB的“线程库” 摘自LLDB来源:
AddSignal (33, "SIG33", false, false, false, "threading library internal signal 2");
但我似乎不明白你的代码为什么会这样。可能是由于一些次要的依赖性问题。可以使用下面的
GDB
命令行忽略和/或消除这些问题:
handle SIG33 nostop noprint
你使用的是什么版本的Android Studio?Android Studio 1.3.1,NDK 10E只是一个想法:信号33可能是用于程序的,你的调试器应该会通过它。我知道如何使用gdb(
处理SIG33 nostop noprint noignore pass
),但不知道如何使用android studio调试器;希望有帮助。有趣。我使用的是lldb,不是gdb,但我想lldb的工作方式是一样的,只有在lldb刚刚连接到进程的一开始,这种情况才会发生。你知道为什么它不会忽略它吗?你使用的是什么版本的lldb?它可能不会因为一个bug而忽略它,或者它是为另一个linux变体编译的。会发生一些崩溃,所以JVM需要打印回溯。主要问题是连接gdb时导致崩溃的原因。
AddSignal (33, "SIG33", false, false, false, "threading library internal signal 2");
handle SIG33 nostop noprint