我已经得到了答案所以我只是发布这个,以防任何其他像我这样糟糕的编码器遇到这个问题。 (虽然有人可能会解释一些黑魔法。)
我正在调试Android设备中的本机代码(三星Galaxy S7,虽然问题很可能会在其他设备中重现),代码将在随机位置停止使用SIGILL。
答案 0 :(得分:1)
当声明函数返回某个值时会出现问题,但实际上它没有实现,例如:
int myfunc() {
someObject.performVeryImportantTask();
// no return value! :(
}
我现在开始意识到-Werror的价值(我想责怪铿锵但我知道的比这更好)。令我困惑的是为什么它会在代码中的随机点中抛出SIGILL。我最好的猜测是在某些时候缺少一个返回值与代码混淆并产生跳转到一个无效的地址,但如果有人可以进一步启发我,请成为我的客人。