Performance 随着时间的推移,GDB的速度越来越慢

Performance 随着时间的推移,GDB的速度越来越慢,performance,debugging,google-chrome,gdb,chromium,Performance,Debugging,Google Chrome,Gdb,Chromium,当在一个调试会话期间使用GDB进行调试时,它会随着时间的推移变得越来越慢。即使是最简单的操作,如“跨过”和“跨入”,也可能需要几十秒,有时甚至几分钟 我正在调试一个相当大的项目(Chromium浏览器)。我能想到的唯一原因是,随着时间的推移,gdb的速度越来越慢,因为它加载了越来越多的符号,并且使用它们所需的时间也越来越长。然而,Chromium将整个代码编译成一个巨大的可执行文件,其中包含所有应该在一开始就加载的符号。因此,符号数据库在调试期间不会增长。此外,为什么只需查找符号就可以执行跨步或

当在一个调试会话期间使用GDB进行调试时,它会随着时间的推移变得越来越慢。即使是最简单的操作,如“跨过”和“跨入”,也可能需要几十秒,有时甚至几分钟

我正在调试一个相当大的项目(Chromium浏览器)。我能想到的唯一原因是,随着时间的推移,gdb的速度越来越慢,因为它加载了越来越多的符号,并且使用它们所需的时间也越来越长。然而,Chromium将整个代码编译成一个巨大的可执行文件,其中包含所有应该在一开始就加载的符号。因此,符号数据库在调试期间不会增长。此外,为什么只需查找符号就可以执行跨步或跨步操作

在测试过程中,我尝试使用gdb和前端(Eclipse、QtCreator、Emacs)并从命令行确认这不是IDE问题。这两个用例都演示了相同的问题,但它似乎在IDE中出现得更快(可能是因为IDE还为监视视图、调用堆栈、线程列表等加载符号)

为什么GDB越来越慢?这是一个设计缺陷,一个bug还是我电脑中的某个特定问题?有没有比GDB更快的免费替代品

为什么GDB越来越慢

这是一只虫子。尝试更新版本的GDB(最好是当前的CVS快照)。如果问题仍然存在,请按照repro说明向报告

应在开始时加载的所有符号

GDB在启动时加载部分符号(
psymbols
),并读取更多的“按需”,因此预计会有一些增长

为什么一个人需要查找符号才能执行跨步或跨步

为了跨越或进入,GDB可能需要当前翻译单元(TU)的行表。如果“单步执行”操作将您带到新的TU,则必须加载新行表


不过,GDB不应该在几分钟内完成
步骤
下一步

听起来像是内存泄漏me@ZMorek:在GDB或Chromium中?我已经完全停止了Linux上的开发,但我的同事说最新版本的速度要快得多,所以我将此标记为正确答案。