有時在GDB中,我想查看控制流程,讓程序到達現在的位置。簡而言之,我如何讓GDB打印最後執行的x行?GDB - 顯示最後執行的n行代碼
1
A
回答
3
這是Reverse Debugging的另一個用例。
你應該在某個時候開始的過程進行記錄和重放:
(gdb) record
當你想看到最後執行的行,你可以倒着走像 這樣:
(gdb) reverse-step 3
或
(gdb) reverse-next 3
- 使用此答案https://stackoverflow.com/a/1545732/72178實際上 打印下N個執行的行。
1
你根本無法做到這一點(容易)在gdb
,因爲任何程序的執行軌跡是不保留數據(以及保持這將是非常昂貴的:它會減慢了很多的執行,它會用很多資源 - 內存&磁盤空間)。
但是,您可以使用gdb
的backtrace
或bt
命令顯示call stack,那就是在當前功能當前指令指針,調用函數,調用函數的調用函數,等等
順便說一句,如果你真的想要它,你可以使用Python或Guile編寫最近的gdb
來給你這樣的信息。您當然可以保留整個跟蹤(通過對功能進行編寫腳本)。
相關問題
- 1. 顯示活動後執行代碼
- 2. 在窗口顯示後執行代碼
- 3. 顯示正在執行的C代碼的當前行
- 4. 在gdb中執行代碼<x>?
- 5. Javascript顯示代碼而不是執行
- 6. SyntaxError:missing}在jQuery代碼執行的屬性列表顯示後
- 7. 代碼::塊與GDB顯示意外的行爲
- 8. 爲最後n行
- 9. 更新後執行代碼
- 10. CompleteRequest後執行代碼()
- 11. clearInterval後執行代碼
- 12. 顯示或更改視圖後執行一些代碼
- 13. 執行整個代碼後顯示活動屏幕
- 14. 爲什麼最後一行沒有被這段代碼執行?
- 15. ReactiveSwift:重試了n次,然後執行一些代碼
- 16. 將代碼顯示爲代碼並且不可執行腳本
- 17. 代碼最後一行的Seg錯誤
- 18. 在grep搜索後顯示n行
- 19. GDB單步執行程序集並顯示將執行的下一條指令。
- 20. 日誌執行源代碼行
- 21. 如何在顯示ProgressBar時執行方法,然後在顯示Form後執行?
- 22. delayed_job - 執行不是最新的代碼?
- 23. 執行代碼
- 24. 代碼執行
- 25. 代碼(java,多線程)在一行代碼後停止執行
- 26. 線程未被執行後的代碼
- 27. 如何強制GDB執行沒有符號的代碼
- 28. 執行塊後執行塊中的一段代碼
- 29. 在Thread.join()執行後執行相同方法中的代碼
- 30. 顯示WizardPage後執行的操作
謝謝!那正是我需要的。奇蹟般有效 –