gpt4 book ai didi

c++ - 使用制表符完成打印变量时 gdb 卡住

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:56 34 4
gpt4 key购买 nike

我编译的c++项目,不算大,大约6M二进制。当我调试它并想要打印一些变量时,我输入前两个字符并按 Tab 键完成。然后 gdb 读取符号永远卡住。我怎么解决这个问题。谢谢!

最佳答案

I type the first two characters and press the Tab to complete. Then the gdb read symbols forever freezing. How can I solve this problem

医生,我这样做的时候很疼。

好吧,别那样做。

说真的,如果你有一个非常大的二进制文件(不清楚你的 6MB 是否是有调试信息的大小),以及很多变量,那么 GDB 将必然不得不花一些时间搜索用于匹配您的两个初始字符的变量。

也就是说,

  • 我们经常调试大小为 2GB 或更大的二进制文件,并且
  • 已花费大量精力改进此类二进制文件的 GDB 体验

所以也许您的第一步应该是使用最新版本的 GDB,看看问题是否已经为您解决。

更新:

My binary is 6MB with debug info

一点也不大。当然,在这样的二进制文件中列出所有变量不应导致超过几秒的延迟。

My GDB version is "GNU gdb (GDB) 7.6.2"

这是最新版本。

可以肯定地说 GDB 中存在错误。

如果您可以构建一个显示问题的最小测试用例,那么最好的办法是将其报告为 http://sourceware.org/bugzilla 中的错误。 .

如果不能,则必须自己调试 GDB。一个合理的起点是运行 strace -p <pid-of-hung-gdb>gdb -p <pid-of-hung-gdb>; (gdb) where找出 GDB 卡住的确切位置。

关于c++ - 使用制表符完成打印变量时 gdb 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933946/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com