当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 随着时间的推移GDB越来越慢

来源:互联网 收集:自由互联 发布时间:2021-06-22
在一个调试会话期间使用GDB进行调试时,它会随着时间的推移变得越来越慢即使是最简单的操作,例如步进和步入也可能需要几十秒甚至几分钟. 我正在调试一个相当大的项目(Chromium浏览器
在一个调试会话期间使用GDB进行调试时,它会随着时间的推移变得越来越慢即使是最简单的操作,例如步进和步入也可能需要几十秒甚至几分钟.

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

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

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

Why is GDB getting slower?

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

all symbols which should be loaded in the very beginning.

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

why would one need to look up symbols just to perform step over or step into

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

不过,它不应该在接近或接下来的几分钟内将GDB带到任何地方.

网友评论