2015-09-07 46 views

回答

3

這是Reverse Debugging的另一個用例。

  1. 你應該在某個時候開始的過程進行記錄和重放:

    (gdb) record 
    
  2. 當你想看到最後執行的行,你可以倒着走像 這樣:

    (gdb) reverse-step 3 
    

    (gdb) reverse-next 3 
    
  3. 使用此答案https://stackoverflow.com/a/1545732/72178實際上 打印下N個執行的行。
+0

謝謝!那正是我需要的。奇蹟般有效 –

1

你根本無法做到這一點(容易)在gdb,因爲任何程序的執行軌跡是保留數據(以及保持這將是非常昂貴的:它會減慢了很多的執行,它會用很多資源 - 內存&磁盤空間)。

但是,您可以使用gdbbacktracebt命令顯示call stack,那就是在當前功能當前指令指針,調用函數,調用函數的調用函數,等等

順便說一句,如果你真的想要它,你可以使用Python或Guile編寫最近的gdb來給你這樣的信息。您當然可以保留整個跟蹤(通過對功能進行編寫腳本)。