我正在开发一个实现一些流密码算法的宠物开源项目,我遇到了一个只有在 ARM 处理器上运行时才会触发的错误。我什至尝试在 qemu 下的 x86 中运行 ARM 二进制文件,但那里没有触发该错误。
该错误的具体机制仍然难以捉摸,但我最好的办法是相信它是由我的程序中未对齐的内存访问尝试引起的,这是由 qemu 实现的,但被我开发板上的真正 ARM 处理器默默地忽略了。
所以,由于这个问题很难诊断,我想知道是否有任何工具可以用来捕获我正在运行的程序进行的未对齐的内存访问,以便我可以准确地看到问题发生在哪里。
如果进程违反内存对齐限制,我还可以使用某种方式在我的 ARM 开发板上启用一些信号(可能是 SIGBUS?),就像我们在访问未映射的内存地址时得到 SIGSEGV 一样。它运行的是 Linux 2.6.32。