我编译的c ++项目,不是太大,大约是6M二进制文件.当我调试它并想要打印一些变量时,我输入前两个字符并按Tab键完成.然后gdb读取符号永远冻结.我怎么解决这个问题.谢谢!
我输入前两个字符并按 Tab 键完成。然后 gdb 读取符号永远冻结。我怎么解决这个问题
医生,我这样做的时候会很痛。
好吧,不要这样做。
说真的,如果你有一个非常大的二进制文件(不清楚你的 6MB 是否是带有调试信息的大小),并且有很多变量,那么 GDB必然会与你的两个初始字符匹配的变量。
也就是说,
因此,也许您的第一步应该是使用最新版本的 GDB,看看问题是否已经为您解决。
更新:
我的二进制文件大小为 6MB,包含调试信息
那根本就不大。当然,列出此类二进制文件中的所有变量不应导致超过几秒钟的延迟。
我的 GDB 版本是“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 陷入困境的确切位置。
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |