2014-04-16 36 views
1

我正在爲ARM寫gdbstub,我有一個問題。我試圖爲我的存根實現觀察點。 GDB爲不同類型的觀察點(讀,寫,訪問)提供了特殊的數據包,但每次我設置一個觀察點時,我都會執行GDB - 單步執行代碼並比較每個步驟的值。它是在GDB文檔中指定的,但爲什麼你需要一個特殊的數據包來編寫觀察點?GDB觀察點實現

顯然,GDB本地實現速度很慢。這個數據包可能需要重新定義實現。例如,當我在addr上設置wp,而不是值時,Z2包真的被髮送。但我不明白GDB應該如何理解「S05」(停止包)是因爲觀察點而發送的。

在斷點處,決定在當前的bp_address與程序計數器值之間進行比較。

它與觀察點有什麼關係?

回答

0

當我試圖與gdbserver的+ GDB x86-64的Linux機器上,gdbserver的回答與Ť包,其特徵在於,它指出 「手錶」 爲停止原因:

分組接收:T05watch:000000000058c460; 06:00deffffff7f0000; 07:f0ddffffff7f0000; 10:9cd4410000000000;螺紋:p3425.3425;核心:5;