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

时间:2011-12-13 03:32:14

标签: performance debugging google-chrome gdb chromium

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

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

测试时我尝试将gdb与前端(Eclipse,QtCreator,Emacs)一起使用,并从命令行确认这不是IDE问题。两个用例都表现出同样的问题,但似乎它在IDE中开始出现得更早(可能是因为IDE还为监视视图,调用堆栈,线程列表等加载符号。)。

为什么GDB变慢?它是我的计算机中的设计缺陷,错误还是某些特定问题?是否有更快的GDB替代方案?

1 个答案:

答案 0 :(得分:3)

  

为什么GDB会变慢?

这是一个错误。尝试更新版本的GDB(最好是当前的CVS快照)。如果问题仍然存在,请使用repro说明向GDB bugzilla报告。

  

应该在一开始就加载的所有符号。

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

  

为什么需要查找符号才能执行步骤或步入

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

但是,它应该在接近stepnext的任何地方接受GDB。