有时在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后执行的操作
谢谢!那正是我需要的。奇迹般有效 –