有時在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. 把代碼由GDB執行
- 2. 在窗口顯示後執行代碼
- 3. 顯示活動後執行代碼
- 4. gdb不顯示非剝離可執行文件的源代碼
- 5. 顯示正在執行的C代碼的當前行
- 6. 單步執行gdb中的stl代碼
- 7. 在gdb中執行代碼<x>?
- 8. 最後執行jQuery代碼塊
- 9. Javascript顯示代碼而不是執行
- 10. SyntaxError:missing}在jQuery代碼執行的屬性列表顯示後
- 11. 代碼::塊與GDB顯示意外的行爲
- 12. 爲最後n行
- 13. CompleteRequest後執行代碼()
- 14. clearInterval後執行代碼
- 15. 更新後執行代碼
- 16. Response.End()後執行代碼
- 17. 不執行我的最後一行代碼
- 18. 執行整個代碼後顯示活動屏幕
- 19. 如何在JSP中執行Java代碼後才顯示頁面
- 20. 顯示或更改視圖後執行一些代碼
- 21. GDB:看到源代碼行?
- 22. 執行後顯示ProgressBar
- 23. VBA代碼隱藏行n - 最大
- 24. 運行方法後執行代碼?
- 25. 爲什麼最後一行沒有被這段代碼執行?
- 26. 調試Python中:展會最後N執行的行
- 27. ReactiveSwift:重試了n次,然後執行一些代碼
- 28. 代碼最後一行的Seg錯誤
- 29. 將代碼顯示爲代碼並且不可執行腳本
- 30. 日誌執行源代碼行
謝謝!那正是我需要的。奇蹟般有效 –