performance - 随着时间的推移,GDB 变得越来越慢

标签 performance debugging google-chrome gdb chromium

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

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

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

为什么 GDB 越来越慢?它是设计缺陷、错误还是我的计算机中的某些特定问题?是否有任何免费的 GDB 替代品可以更快地工作?

最佳答案

Why is GDB getting slower?



这是一个错误。尝试更新版本的 GDB(最好是当前的 CVS 快照)。如果问题仍然存在,请报告给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 到 step 不应该花几分钟的时间。或 next .

关于performance - 随着时间的推移,GDB 变得越来越慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484002/

相关文章:

c++ - 随机化 std::list 时提高性能

ruby-on-rails - Heroku 应用程序启动超时

C# 调试 : [DebuggerDisplay] or ToString()?

xcode - 如何查看 C++ 变量的类型?

c++ - 调试::gdb::src2dst 是什么?

javascript - chrome 67 中的 getTime 不正确

ruby - Watir:使用不同 DOM 选择方法读取所需时间的差异

jquery - 如何加快IE8中innerHTML的读取速度?

javascript - 如何在 Chrome 81+ 中忽略 Canvas 上的图像 exif 数据

html - NVDA 在 Chrome 中读出文本两次