如何在Linux上调试C程序?

28

我正在Linux上使用GCC编写C语言程序,并使用Make文件进行编译。

我想要调试我的程序。我不想只调试单个文件,我想要调试整个程序。

我该如何做?

4个回答

34

使用-g标志编译您的代码,然后使用gdb调试器。 gdb的文档在这里,但本质上:

gcc -g -o prog myfile.c another.c

然后:

gdb prog

如果你想要一个用户友好的 gdb 图形界面,请看看 DDDInsight


3
还有一个名为ddd的gdb图形界面,如果您使用gdb感到困难,它可能会很有用。 - wasatz
+1 只是为了添加 - http://stackoverflow.com/questions/2588853/the-community-driven-gdb-primer - N 1.1
我有大量的.c文件。 根据您的意见,我需要全部包含它们。 是否有更短的方法? - ambika
@ambika 只需在您的 makefile 中的 CFLAGS 宏后添加 -g 即可。 - anon
不要忘记-Wall选项和使它编译干净。 - Tadeusz A. Kadłubowski
“prog”是什么?在互联网上完全没有提到过。 - Santropedro

7

我猜你是在命令行中构建。

你可能想考虑使用集成开发环境(IDE),例如KDevelop或Eclipse等(提示 - Eclipse ... ECLPISE ... E C L I PS E)。

使用IDE编辑代码,重构代码,检查代码 - 类树,单击变量、类或函数跳转到声明等等

当然还包括调试:

  • 在IDE中运行代码
  • 设置断点以停止在特定行
  • 或逐行步进
  • 检查调用堆栈以查看如何到达该位置
  • 检查变量的当前值,以理解问题
  • 更改这些变量的值并运行以查看发生了什么
  • 等等,等等

p.s.正如wasatz提到的那样- DDD非常棒-可以可视化数组/矩阵的内容,特别是如果你有链接列表


1
你可以使用基于gdb的简单实用的GUI工具"Nemiver"。它可以调试包含多个源文件的整个模块。

enter image description here


0

尝试使用cgdb

cgdb是GNU Debugger(GDB)的轻量级curses(基于终端的)接口。除了标准的gdb控制台外,cgdb还提供了一个分屏视图,显示执行时的源代码。键盘界面模仿vim,因此vim用户在使用cgdb时应该感到自在。

GitHub存储库


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接