我正在使用GDB调试一个处理数字的C ++程序。我需要10分钟才能到达要调试的有趣功能。然后我检查变量,理解程序的各个部分并重新编译,再次运行GDB,直到我再次达到目的。
此过程有时耗费时间。我想知道是否可以加速。有什么想法吗?
谢谢
答案 0 :(得分:4)
在运行GDB之前,您绝对不能让编译器优化代码以使其运行得更快。你有没有写好单元测试?拥有一个不错的测试套件可能会为您节省大量时间,并防止您在调试器中花费过多的金额。
答案 1 :(得分:1)
有gdb固定指令(一种自动化调试过程的小语言)。并且还有python绑定可以帮助您自动化gdb。调试应该是最后的手段,你应该编写测试,或者更多地考虑你写的内容,这会大大加快deubgging过程(因为你可能不需要再调试,或者很少)。
答案 2 :(得分:1)
编写使用各种输入运行有趣函数的测试。然后,您可以调试该函数,而无需担心其余的代码。
答案 3 :(得分:0)
您是否尝试过UndoDB:http://undo-software.com/
它允许您来回走动 - 可逆调试。虽然gdb现在有自己的可逆调试,但在该模式下运行会有大幅放缓 - 20,000x或更差。 UndoDB将以大约1.7倍的速度运行,因此您可以快速进入有趣的部分,然后来回处理您的错误。
(披露:我为撤销软件工作)
答案 4 :(得分:0)
在GNU / Linux下,您也可以尝试:
checkpoint
...
restore n
如果您的程序不是多线程的(checkpoint
在内部使用fork()
,则适用相同的限制)。
你应该在调试开始时需要10分钟!