在 Linux 中调试 C++ 程序
Posted
技术标签:
【中文标题】在 Linux 中调试 C++ 程序【英文标题】:Debug C++ program in Linux 【发布时间】: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 你不必这样做,你的程序没有错误。 我知道这是个玩笑,但我不喜欢调试器将重点放在消除错误上。调试器使我们能够以仅通过检查代码无法实现的方式理解程序。 【参考方案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章。
【讨论】:
以上是关于在 Linux 中调试 C++ 程序的主要内容,如果未能解决你的问题,请参考以下文章
在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
VScode 编译调试运行C++ 程序的 配置文件设置(LINUX环境Windows10环境)自我总结