我正在開發一個實現了一些流密碼算法的寵物開源項目,而我在遇到只有在ARM處理器上運行它時才觸發的錯誤。我甚至嘗試在qemu下運行x86中的ARM二進制文件,但是在那裏沒有觸發該錯誤。如何捕獲未對齊的內存訪問?
該錯誤的具體機制仍然難以捉摸,但我的最佳觀點是相信它是由在我的程序中做出的未對齊的內存訪問嘗試造成的,這由qemu實現,但被我的真實ARM處理器默默忽略開發板。因此,由於問題顯示爲非常難以診斷,我想知道是否有任何工具可以用來捕獲我的正在運行的程序所產生的未對齊內存訪問,以便我可以清楚地看到在哪裏問題就會發生。
如果進程違反內存對齊限制,我也可以使用某種方式在我的ARM開發板上啓用一些信號(SIGBUS,也許?),就像我們在訪問未映射內存地址時獲取SIGSEGV一樣。它運行的是Linux 2.6.32。
這至少與你正在使用的ARM架構有關。斷點是ARMv6 afaik。 – auselen 2013-05-15 06:30:38