Dab*_*ler 83 c++ android porting android-ndk
我正在使用NDK和GCC将一些C++代码移植到Android.代码基本上运行.有一次,在Eclipse中调试时,调用
__CODE__
导致此错误:
__CODE__
那是什么意思?编译器是否因某种原因生成了非法代码?我在构造函数中有一个断点(它什么都不做),而且它没有被击中.我已经做了完整的重建.
我可能做错什么导致这个问题?
Dab*_*ler 680
它现在有效.对于其他任何挣扎于Android/NDK/GCC/Eclipse的人来说,这就是我解决它的方法:
尚未验证两个步骤是否真的有必要,如果不是,哪个步骤是多余的.
Max*_*int 31
确保所有具有非 void 返回类型的函数都有一个return
语句。
虽然一些编译器会自动提供默认返回值,但其他编译器会在运行时尝试让函数没有返回值时发送 SIGILL 或 SIGTRAP。
tro*_*foe 24
这意味着CPU试图执行它不理解的指令.这可能是由于我认为的腐败造成的,或者可能是因为错误的架构而被编译(在这种情况下我会认为O/S会拒绝运行可执行文件).不完全确定根本问题是什么.
LeetCode的在线编译器和开发环境会生成SIGILL
错误,但在我的桌面 IDE 中不会生成相同的错误。
例如,具有越界索引的数组访问:
["foo", "bar"][2]
Run Code Online (Sandbox Code Playgroud)
LeetCode的编译器只显示错误:
运行时错误进程退出并发出信号
SIGILL
在本地 Xcode Playground 中,相同的代码会导致错误:
错误:执行被中断,原因:EXC_BREAKPOINT(代码=1,子代码=0x18f2ea5d8)。
进程已留在中断点,使用“thread return -x”返回到表达式求值之前的状态。
只有在完整的 Xcode 项目编译和运行中才会报告实际错误:
线程 1:致命错误:索引超出范围
归档时间: |
|
查看次数: |
104924 次 |
最近记录: |