在Linux中debuggingC ++程序

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

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

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

你可以使用gdb这件事情:

 $ gdb hello 

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

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

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

祝你好运

我一直以为emacs为gdb提供了一个相当用户友好的前端…

例如

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

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

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

在瑞典的C ++编程课程中,有一部分关于GNU调试器的实验室。 我从来没有用过,但是在这里有一篇文章解释了基本用法,据我记忆在第二章。