在 Linux 中调试 C++ 程序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/370622/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Debug C++ program in Linux
提问by Greg Hewgill
I have written a simple C++ program like this:
我写了一个简单的 C++ 程序,如下所示:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello.";
return 0;
}
Now I want to debug it. So what will be the command for it so my control goes to every line?
现在我想调试它。那么它的命令是什么,这样我的控制就到每一行?
回答by Greg Hewgill
You can use gdb
for this:
您可以gdb
为此使用:
$ gdb hello
This will start gdb
and prompt you for what to do next. The next
command executes one line of source and stops at the next line.
这将启动gdb
并提示您下一步要做什么。该next
命令执行一行源代码并在下一行停止。
I found a basic GDB tutorialthat may be helpful.
我找到了一个可能有帮助的基本GDB 教程。
回答by dario minonne
Don't forget to compile your source code using -g option.
Like this: g++ -g helloWorld.cc
This is going to create an a.out executable file.
You'll be able to debug your a.out exe using gdb ./a.out
command.
Another tool you may use it's dddbasically a GUI for gdb.
不要忘记使用 -g 选项编译源代码。像这样:g++ -g helloWorld.cc
这将创建一个 a.out 可执行文件。您将能够使用gdb ./a.out
命令调试 a.out exe 。您可能会使用的另一个工具是ddd,它基本上是 gdb 的 GUI。
Good luck
祝你好运
回答by Mr.Ree
I always thought emacsprovided a pretty user-friendly front-end to gdb...
我一直认为emacs为 gdb 提供了一个非常用户友好的前端......
E.g.
例如
- % g++ hello.cc -g -o hello
- emacs hello.cc
- [ In Emacs] Escape-x gdb
- Emacs will say "Run gdb (like this): gdb ".
- Add your binary name ("hello"). (E.g. "Run gdb (like this): gdb hello".)
- Go to your hello.cc buffer.
- Use the emacs command 'gud-break' to set a breakpoint in gdb from your hello.cc buffer. (Normally bound to "C-x space".)
- Go to your *gud-hello* buffer.
- Type "run" at the (gdb) prompt.
- Use [ N] Next or [ S] Step. Or [ C] Continue. [ BT] Backtrace is also useful.
- Note what happens to the little triangle in the leftmost column of your hello.cc buffer.
- % g++ hello.cc -g -o 你好
- emacs hello.cc
- [在 Emacs 中] Escape-x gdb
- Emacs 会说“运行 gdb(像这样):gdb”。
- 添加您的二进制名称(“hello”)。(例如“运行 gdb(像这样):gdb hello”。)
- 转到您的 hello.cc 缓冲区。
- 使用 emacs 命令 'gud-break' 从 hello.cc 缓冲区在 gdb 中设置断点。(通常绑定到“Cx 空间”。)
- 转到您的 *gud-hello* 缓冲区。
- 在 (gdb) 提示符下键入“run”。
- 使用 [ N] Next 或 [ S] Step。或 [ C] 继续。[ BT] 回溯也很有用。
- 请注意 hello.cc 缓冲区最左侧列中的小三角形发生了什么。
(That should suffice to get you started. Emacs being emacs, there are always more features...)
(这应该足以让你开始。Emacs 就是 emacs,总是有更多的功能......)
回答by tunnuz
回答by Marc
If you want some user-friendly debugger, you can use Kdbg, which is basically a gdb frontend for KDE. Perhaps not so powerful as ddd, but easier to start with.
如果你想要一些用户友好的调试器,你可以使用 Kdbg,它基本上是 KDE 的 gdb 前端。也许不如 ddd 强大,但更容易上手。