1.5.5 C 语言调试
大家有没有想过,在以后编写程序代码时可能会出现这样那样的错误,这是肯定的,虽然像是给大家泼冷水,但这是不可回避的问题。不可回避就勇敢接受吧。
从错误出现的时间上可分为两类:编译时错误和运行时错误。所谓编译时错误就是在写好源文件后,在进行编译时出现的错误,主要分为语法错误和链接错误两种。语法错误比较明显,解决也相对简单,编译器通常会给出错误的代码位置,程序员根据提示位置到代码中进行修改就行了。而链接错误通常是由于所需的库文件找不到或函数没有具体的实现等原因造成的。另一种是运行时错误,也就是编译可以顺利通过,但程序运行时出现了错误。例如程序崩溃和异常退出,程序运行造成死机,程序运行的结果不正确等。这类错误处理起来相对棘手,通常需要对程序进行反复的调试,才能找到问题所在。所以程序的调试主要是针对运行时错误而言的。那下面就来看看有哪些调试方式吧。
1.人工调试
人工调试就是通过人的眼看、脑算、手记等方法对程序代码进行调试的过程。通常采取逐行跟踪追查的办法,用人脑来推算、模拟出程序的运行轨迹,直至找出问题位置。这种调试方式适合代码量少、结构简单的程序。
2.代码调试
代码调试通常采取在程序不同位置设置一些特定条件或可输出信息的程序代码,然后根据特定条件的执行情况或输出信息来判断、寻找错误的大概位置。这种调试方式适合于代码量大、结构复杂的程序代码,但同时要求调试者有较强的逻辑判断能力。
3.工具调试
工具调试采用功能强大的调试工具来对程序进行跟踪调试,这些调试工具通常都具有代码跟踪、断点设置、内存查询、变量监视等功能,可以通过一步一步地执行代码来观察程序的运行状态,极大地方便了对程序的调试。
其实在 1.4 节安装的 MinGW 里包含了一套工具。除了 GCC 编译器外,还包含一个名为 GDB 的调试工具,使用 GDB 可以很方便地配合 GCC 进行程序的调试。不过想要使用 GDB 来调试程序,在使用 GCC 编译源文件时需要多加一个选项“-g”,即完整的编译命令为“gcc -g first.c -o first.exe”。“-g”选项的作用是让编译后的程序里包含相关的调试信息,这样才能让 GDB 调试工具发挥作用。
在控制台窗口输入命令“gdb first.exe”,这样就进入程序调试界面了,如图 1.20 所示。
图 1.20 使用 GDB 调试工具
现在就可以在“〈gdb〉”提示符后面输入相应的调试命令来对程序进行调试了。例如“list”或其简写“l”可以显示当前的源代码,也可以用“list 1,5”或“l 1,5”来显示源代码中的 1~5 行;使用“break 3”或“b 3”在第 3 行代码处设置断点,然后使用“run”或“r”来运行程序,程序将启动并暂停在断点处,然后不断使用“step”或“s”来一步一步地执行程序,还可使用“continue”让程序运行到下一个断点处;使用“quit”或“q”可退出调试。一些常用的调试命令如表 1.1 所示。
表 1.1 gdb 调试命令
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论