问题标签 [gdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
498 浏览

linux - 如何让 gdb 忽略我的 shell 窗口的大小?

这是我们单元测试流程的一部分。我使用 --command 选项运行 gdb 以让它执行来自文本文件的命令。然后将 gdb 的输出定向到一个文件中,并将该文件与参考文件进行比较。但问题是,gdb 使用当前 shell 窗口的大小在其输出中放置换行符。如果窗口较小,它将在输出中添加更多换行符以使其更具可读性。

gdb 中是否有一个选项可以禁用它,这样无论我在哪个 shell 窗口中运行它,我的测试输出总是相同的?

编辑:找到它,我只是将它用作第一个 gdb 命令:

有时事情很容易。

0 投票
6 回答
1978 浏览

c - 如何学习 C 调试和最佳实践

我用 C 编写了一个 Apache 模块。在某些条件下,我可以让它出现段错误,但我不知道为什么。此时,可能是我的代码,可能是我编译程序的方式,也可能是操作系统库中的错误(段错误发生在调用 dlopen() 期间)。

我尝试过运行 GDB 和 Valgrind,但没有成功。GDB 让我回溯到看起来毫无意义的 dlopen() 系统调用。在 Valgrind 中,该错误实际上似乎消失了,或者至少变得不可重现。另一方面,当谈到这些工具时,我完全是个新手。

我对生产质量的 C 编程有点陌生(我多年前开始使用 C,但从未专业地使用它。)对我来说学习调试程序的最佳方法是什么?我还应该研究哪些其他工具?总之,您如何弄清楚如何应对新的错误挑战?

编辑:澄清一下,我要感谢 Sydius 和 dmckee 的意见。我看过 Apache 的指南,并且对 dlopen(以及 dlsym 和 dlclose)相当熟悉。我的模块大部分都可以工作(它大约有 3k 行代码,只要我不激活这一部分,一切似乎就可以正常工作。)

我想这就是我最初的问题的来源——我不知道下一步该做什么。我知道我没有充分利用 GDB 和 Valgrind。我知道我可能没有使用完全正确的标志进行编译。但我很难弄清楚更多。我可以找到告诉我已经知道的内容的初学者指南,以及告诉我比我需要知道的更多但没有指导的手册页。

0 投票
5 回答
8385 浏览

c - 如何在 GDB 中调试 fork-exec 进程的入口点?

我有一个 C linux 应用程序 (A),它在启动时会生成另一个进程 (P)。当我想像往常一样调试 PI start A 并使用 ddd/gdb 连接到 P 时。

当我想调试 P 的入口点(main 的开始)时会出现问题。如果我在将调试器连接到 P 时遵循通常的方法已经为时已晚。我找到的解决方案是在 P 的 main 开头插入一个 sleep ,这样我就有时间连接 gdb ,但这不是一个非常优雅的解决方案。

我也尝试过使用asm("int $3"),但它似乎不起作用。

你知道我该如何解决这个问题吗?(最好不要改变A或P的代码)

0 投票
2 回答
298 浏览

xcode - 在xcode中调试隐藏光标的应用程序时,如何强制它重新出现

在调试全屏游戏(在我的两台显示器之一上)时,当它崩溃并且调试器(在另一台显示器上,未捕获)显示崩溃位置时,光标仍然隐藏。有什么办法可以强制光标重新出现?我可以盲目地四处点击,它可以工作,但它的准确度并不可怕。

0 投票
5 回答
61166 浏览

gdb - How do I stop execution in GDB without a breakpoint?

How do I stop a GDB execution without a breakpoint?

0 投票
7 回答
103232 浏览

c++ - 使用 gdb 检查标准容器 (std::map) 内容

假设有这样的东西:

我希望能够检查从 gdb 运行程序的地图内容。
如果我尝试使用下标运算符,我会得到:

使用 find 方法不会产生更好的结果:

有没有办法做到这一点?

0 投票
3 回答
23743 浏览

c++ - 使用 gdb 调试 C++ STL/Boost 的最佳实践

使用 gdb 调试,任何使用 STL/boost 的 c++ 代码仍然是一场噩梦。任何使用过 STL 的 gdb 的人都知道这一点。例如,在此处查看代码中一些调试会话的示例运行。

我试图通过收集提示来减轻痛苦。您能否评论一下我在下面收集的提示(特别是您一直在使用的提示以及您建议对它们进行的任何更改)-我列出的提示是技术性的降序。

  • 有人在使用“Stanford GDB STL utils”“UCF GDB utils”吗?是否有一些用于提升数据结构的工具?上面的实用程序似乎不能递归使用,例如用于在一个命令中以清晰的方式打印 boost::shared_ptr 的向量。
  • 编写您的 .gdbinit 文件。例如,包括 C++ 相关的美化器,列在 UCF GDB 实用程序的底部。
  • 使用检查/调试 STL/Boost 库,例如 STLport。
  • 使用日志记录(例如这里描述的)

更新:GDB 有一个新的 C++ 分支

0 投票
10 回答
4256 浏览

c++ - Linux C++ 调试器

我正在寻找完美的 Linux C++ 调试器。我不期望成功,但搜索应该是信息丰富的。

我是一个非常有能力的 gdb 用户,但 STL 和 Boost 很容易粉碎我的调试技能。并不是我无法深入了解数据结构的内部结构,而是我通常会花费很长时间才能找到另一种方法(“如有疑问,请打印出来”)。

gdb 的宏语言很奇怪,适应性也不是很好。只需查看 stanford gdb utils 打印出 stl 结构的代码即可。

简而言之,我对自己所拥有的不满意。

我最近偶然发现了零错误。它看起来像一颗银弹。现在的零漏洞用户怎么看?

有没有人找到其他解决 Linux C++ 调试器问题的好方法?

0 投票
3 回答
8496 浏览

visual-studio - 如何在 Visual Studio C++ (Express) 中使用 GDB 来调试我的 GCC Makefile 项目?

我的 Visual Studio (express) 2005/2008(现在没关系)上有几个 Makefile 项目,用于使用 MinGW GCC 编译器编译一些应用程序。我不想使用 MS 编译器,因为有些功能只在 GCC 上可用。

现在我想从 VS 内部进行调试,因为我正在使用它进行编码,但这需要我使用 GDB(它从命令行工作)但我更喜欢使用 IDE 工具。

有没有办法做到这一点?即使 Express 版本受到限制并且不支持它,是否可以使用完整版来完成?

0 投票
5 回答
79417 浏览

emacs - 如何加载程序读取标准输入并在 gdb 中获取参数?

我有一个从标准输入获取输入并从命令行获取一些参数的程序。它看起来像这样:

我尝试在 emacs 中使用 gdb 调试代码,通过 Mx gdb,我尝试使用以下命令加载程序:

但是,gdb 不喜欢它。

这里抄袭的问题。不幸的是,我不了解解决方案,并且不确定除了使用-g选项编译和运行命令 Mx gdb 之外还能做什么。