android - 是什么导致信号 'SIGILL' ?

标签 android c++ android-ndk porting

我正在使用 NDK 和 GCC 将一些 C++ 代码移植到 Android。代码基本上运行。有一次,在 Eclipse 中调试时,调用

Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory;

导致此错误:

Thread [1] (Suspended: Signal 'SIGILL' received. Description: Illegal instruction.) 
    1 <symbol is not available> 0x812feb44

这是什么意思?编译器是否出于某种原因生成了非法代码?我在构造函数中有一个断点(它什么都不做),它没有被命中。我已经完成了完整的重建。

我做错了什么会导致这个问题?

最佳答案

确保所有具有非 void 返回类型的函数都有 return 语句。

虽然有些编译器会自动提供默认返回值,但其他编译器会在运行时发送一个 SIGILL 或 SIGTRAP,以便在没有返回值的情况下离开函数。

关于android - 是什么导致信号 'SIGILL' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901867/

相关文章:

c++ - 当只有一个对象实现基函数时的菱形继承

通过 NDK 的 Android 客户端-服务器

java - 在Android中创建字节数组的ArrayList

c++ - 在派生类中重载模板运算符

android - 在 Android 中以马赛克风格显示图库中的图像?

c++ - 带有自定义* .o文件的“ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000”

java - 在 Android 中从 C++ 调用 getUnicodeChar 方法

android - 使用opensl es和android ndk实时播放音频

带有两个 ListView 的 Android LinearLayout

java - 使用 'android-vision'库保存实时检测到的人脸(Track Faces)图像