我正在编写一个跨平台应用程序,可以在x86机器上运行,但在实际的ARM硬件(Raspberypi 2)上崩溃并显示“总线错误”...
[ 4105.019037] Alignment trap: not handling instruction edd37a00 at [<00014218>]
[ 4105.019059] Unhandled fault: alignment exception (0x001) at 0x0002814e
[ 4105.028227] pgd = b736c000
[ 4105.033347] [0002814e] *pgd=3708d835, *pte=335d075f, *ppte=335d0c7f
...但在Qemu中运行时没有任何问题。
我运行以下命令,在在Qemu下运行的内核中启用SIGBUS信号和通知,但似乎没有任何效果:
echo 5 > /proc/cpu/alignment
[2]
如何在Qemu(或其他免费模拟器)中模拟这些错误?我想能够在连续集成环境中运行我的自动化测试,该环境运行在无法使用实际硬件的x86机器上。或者我可以租用ARM服务器,但我想避免这种情况。
后来编辑以进一步澄清:导致真实硬件出现此问题的指令也在仿真器中执行,在其中似乎可以正常工作而不触发任何异常。
-fsanitize=undefined
来启用它。 - jww