我正在编写一个跨平台应用程序,该应用程序可在 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
Run Code Online (Sandbox Code Playgroud)
...但在Qemu中运行没有任何问题。
我运行此命令以在 Qemu 下运行的内核中启用 SIGBUS 信号和通知,但它似乎没有任何效果:
echo 5 > /proc/cpu/alignment
[ 2 ]
如何在 Qemu(或其他免费模拟器)中模拟这些错误?我希望能够在 x86 机器上运行的持续集成环境中运行自动化测试,而我无法使用实际的硬件。或者,我可以租用 ARM 服务器,但我想避免这种情况。
稍后编辑以进一步澄清:在真实硬件上导致此问题的指令也在模拟器中执行,它似乎可以工作而不会触发任何异常。