我正在使用 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/