我想問問,如果有人有任何想法如何檢測寫入分配內存地址。內存塊C寫入/讀取檢測
起初我使用mprotect和sigaction一起進行寫/讀操作時強制出現分段錯誤。
用在幾個這種方法兩個負面因素:
- 是很難通過分段故障
- 在mprotect的內存地址傳遞必須對齊到一個頁面邊界,即它無法處理這個內存地址用一個簡單的malloc。
爲了闡明問題:
我構建的應用程序中下集羣環境。在某些時候,我分配內存,我在本地主機調用緩衝區並分配一些數據。該緩衝區將被髮送到遠程節點並具有相同的過程。在同一點上,這個緩衝區將在遠程節點中被寫入/讀取,但是我不知道什麼時候(它將被用於DMA寫入/讀取緩衝區),必須通知本地主機關於緩衝區修改。就像我上面說過的,我已經使用了一些機制,但其中沒有一個能夠以其能力處理它。現在我只想要一些想法。
每個不同的想法在這裏受到歡迎。
謝謝
感謝您的建議。也許我沒有表達得很好,但這裏的想法並不是調查什麼可能是錯誤的特定內存塊,但是是捕獲一個內存地址的時候執行讀/寫操作在這個內存地址和處理它像一個事件。這個所有操作中最重要的事情必須是執行時間。 – Majao
@Majao:我想我確實瞭解你。應該可以從應用程序本身設置調試寄存器,正如我寫的那樣,有一些缺點。我認爲針對您的問題(檢測特定內存訪問)的唯一解決方案是硬件設施,並且超出頁面級訪問限制,X86調試寄存器是您唯一的選擇。 – Bart