[問題] 列出程式執行時經過哪些address (debugger)

看板C_and_CPP作者 (@@)時間15年前 (2010/11/07 20:33), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
如果想要得到程式在執行時,某個時間區段經過哪些address,要怎麼做呢? 這個想法來自於cheat engine中的一個功能 那個功能可以監控在某個時間區段中 哪行程式(in code segment)存取過某個指定的位址(in data segment) 然後再將有存取到位址的程式顯示在清單上 cheat engine有open source,是用delphi寫的 那個功能實做在Debugger.pas這個檔案中 但是不知道他是怎麼監控到每行程式的 讓程式在執行期間和debug模式之間來回切換? 還是讓程式自動單步執行呢? 我目前是用c在寫這個功能,不過對於程式在執行期間debug的觀念還沒弄清楚 想知道這部分是如何做的 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.237.163

11/07 20:56, , 1F
單步執行對每條組語做檢查吧,會寫debugger的人很厲害吧
11/07 20:56, 1F

11/07 21:09, , 2F
那麼單步執行只靠windows的debugging function有辦法做出
11/07 21:09, 2F

11/07 21:09, , 3F
來嗎? 目前是用DebugBreakProcess函式對程式下中斷,但是
11/07 21:09, 3F

11/07 21:10, , 4F
不知道怎麼做到單步執行的功能。有聽過一個比較低階的方
11/07 21:10, 4F

11/07 21:10, , 5F
法是寫int 1進程式裡,不過在user-mode有辦法這樣做嗎@@?
11/07 21:10, 5F

11/07 21:21, , 6F
我記得有一個API是轉下一個指令的,不用設斷
11/07 21:21, 6F

11/07 21:45, , 7F
請問是哪個API呢
11/07 21:45, 7F

11/07 22:02, , 8F
11/07 22:02, 8F

11/07 22:06, , 9F
他是利用 CPU 的 Debug Register 實做的
11/07 22:06, 9F
文章代碼(AID): #1Crfojv_ (C_and_CPP)