【发布时间】:2013-05-09 00:31:49
【问题描述】:
我正在开发一个实现一些流密码算法的宠物开源项目,但我遇到了一个只有在 ARM 处理器上运行时才会触发的错误。我什至尝试在 qemu 下在 x86 中运行 ARM 二进制文件,但那里没有触发该错误。
该错误的具体机制仍然难以捉摸,但我最好的办法是相信它是由我的程序中未对齐的内存访问尝试引起的,这是由 qemu 实现的,但在我的开发中被真正的 ARM 处理器默默地忽略了板。
所以,由于这个问题很难诊断,我想知道是否有任何工具可以用来捕获我正在运行的程序进行的未对齐内存访问,以便我可以准确地看到问题发生了。
如果进程违反内存对齐限制,我还可以在我的 ARM 开发板上使用某种方式启用某些信号(可能是 SIGBUS?),例如我们在访问未映射的内存地址时得到 SIGSEGV。它运行的是 Linux 2.6.32。
【问题讨论】:
-
这至少与您使用的 ARM 架构有关。断点是 ARMv6 afaik。
标签: c linux arm memory-alignment