我已经得到了答案,所以我只是发布这个,以防其他像我一样糟糕的编码员遇到这个问题。 (不过,有些人可能能够解释一些黑魔法)。
我正在 Android 设备(三星 Galaxy S7,尽管该问题很可能在其他设备中重现)中调试 native 代码,代码将在随机位置停止并出现 SIGILL。
最佳答案
当一个函数被声明返回某个值但它实际上没有在其实现中时,就会出现问题,例如:
int myfunc() {
someObject.performVeryImportantTask();
// no return value! :(
}
我现在开始欣赏 -Werror 的值(value)(我想责怪 clang,但我比这更清楚)。让我困惑的是为什么它会在代码中的随机点抛出一个SIGILL。我最好的猜测是,在某些时候缺少返回值会扰乱代码并生成跳转到无效地址的跳转,但如果有人可以进一步启发我,请成为我的客人。
关于android - 在代码中的随机点 (NDK) 中收到 SIGILL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571955/