【问题标题】:Debug C++ program in Linux在 Linux 中调试 C++ 程序
【发布时间】:2008-12-16 07:08:22
【问题描述】:

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

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

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

【问题讨论】:

  • 本教程说如何通过 6 个简单的步骤进行调试 thegeekstuff.com/2010/03/debug-c-program-using-gdb
  • 你不必这样做,你的程序没有错误。
  • 我知道这是个玩笑,但我不喜欢调试器将重点放在消除错误上。调试器使我们能够以仅通过检查代码无法实现的方式理解程序。

标签: c++ linux debugging


【解决方案1】:

您可以为此使用gdb

$ gdb hello

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

我找到了一个基本的GDB tutorial 可能会有所帮助。

【讨论】:

    【解决方案2】:

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

    祝你好运

    【讨论】:

      【解决方案3】:

      我一直认为 emacs 为 gdb 提供了一个非常用户友好的前端...

      例如

      • % 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 ] 回溯也很有用。
      • 注意 hello.cc 缓冲区最左侧列中的小三角形发生了什么变化。

      (这应该足以让您入门。Emacs 就是 Emacs,总是有更多功能......)

      【讨论】:

      • 我建议使用g++ -Wall -Wextra hello.cc -g -o hello 进行编译,因为编译器警告非常有用。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-02
          • 1970-01-01
          • 2010-09-19
          • 1970-01-01
          • 1970-01-01
          • 2015-11-21
          • 2012-02-09
          • 1970-01-01
          相关资源
          最近更新 更多