在Linux中调试C ++程序

时间:2008-12-16 07:08:22

标签: c++ linux debugging

我写了一个简单的C ++程序:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello.";
    return 0;
}

现在我想调试它。那么它的命令是什么,所以我的控制权到达每一行?

5 个答案:

答案 0 :(得分:29)

您可以使用gdb

$ gdb hello

这将启动gdb并提示您下一步该做什么。 next命令执行一行源并在下一行停止。

我找到了可能有用的基本GDB tutorial

答案 1 :(得分:17)

不要忘记使用-g选项编译源代码。 像这样:g++ -g helloWorld.cc 这将创建一个a.out可执行文件。 您将能够使用gdb ./a.out命令调试a.out exe。 您可以使用的另一个工具ddd基本上是gdb的GUI。

祝你好运

答案 2 :(得分:6)

我一直认为 emacs 为gdb提供了一个非常人性化的前端...

E.g。

  • %g ++ hello.cc -g -o hello
  • emacs hello.cc
  • [在Emacs中] Escape-x gdb
  • Emacs会说“运行gdb(就像这样):gdb”。
  • 添加二进制名称(“hello”)。 (例如“运行gdb(像这样):gdb hello”。)
  • 转到hello.cc缓冲区。
  • 使用emacs命令'gud-break'在hello.cc缓冲区中设置gdb中的断点。 (通常绑定到“C-x空间”。)
  • 转到你的* gud-hello *缓冲区。
  • 在(gdb)提示符下键入“run”。
  • 使用[ N ]下一步或[ S ]步骤。或[ C ]继续。 [ BT ] Backtrace也很有用。
  • 请注意hello.cc缓冲区最左侧列中的小三角形会发生什么。

(这应该足以让你开始.Emacs是emacs,总有更多功能......)

答案 3 :(得分:3)

如果你想要一些用户友好的调试器,你可以使用Kdbg,它基本上是KDE的gdb前端。也许不如ddd那么强大,但更容易入手。

答案 4 :(得分:3)

在我在瑞典做的C ++编程课程中,有一部分实验室关于GNU调试器。我之后从未使用它,但here有一篇论文解释了基本用法,据我记得在第2章。