2013-01-02 20 views
-1

我的理解是調試器使用ReadProcessMemory(在Windows環境中)來讀取另一個進程的內存。我在想什麼:ReadProcessMemory將另一個進程的內存讀到一個緩衝區,所以會導致開銷。調試器是讀取小塊的內存還是一次讀取整個進程的內存?調試器如何與ReadProcessMemory配合使用?

+0

不看我向誰負責。有很多不同的調試器,他們可以自由地爲每個特定的情況做任何工作。如果需要的話,大多數情況下可能會讀取塊...特別是在x64 :)也可以想象將整個16/32位進程空間讀入大型32/64位進程進行分析。 –

+2

我從來沒有寫過調試器,但是如果我這樣做了。如果用戶要求堆棧回溯,讀取該線程的堆棧(大約1 MB)可能是有意義的。如果用戶想要打印一個變量,請只爲該變量讀取內存。 –

回答

0

API不保證原子讀取。最終,它複製數據(與通過地址映射提供對原始字節的訪問相反),並且如果調試對象仍在運行,則可能會在API調用進行時更改有問題的內存。

相關問題