是否可以加速使用GDB进行调试?

时间:2010-03-24 14:34:12

标签: gdb

我正在使用GDB调试一个处理数字的C ++程序。我需要10分钟才能到达要调试的有趣功能。然后我检查变量,理解程序的各个部分并重新编译,再次运行GDB,直到我再次达到目的。

此过程有时耗费时间。我想知道是否可以加速。有什么想法吗?

谢谢

5 个答案:

答案 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分钟!