-
Notifications
You must be signed in to change notification settings - Fork 25
/
ch10.html
3 lines (3 loc) · 3.91 KB
/
ch10.html
1
2
3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>第 10 章 gdb</title><link rel="stylesheet" href="styles.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Linux C编程一站式学习" /><link rel="up" href="pt01.html" title="部分 I. C语言入门" /><link rel="prev" href="ch09s05.html" title="5. indent工具" /><link rel="next" href="ch10s01.html" title="1. 单步执行和跟踪函数调用" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第 10 章 gdb</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch09s05.html">上一页</a> </td><th width="60%" align="center">部分 I. C语言入门</th><td width="20%" align="right"> <a accesskey="n" href="ch10s01.html">下一页</a></td></tr></table><hr /></div><div class="chapter" lang="zh-cn" xml:lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a id="id2740153"></a>第 10 章 gdb</h2></div></div></div><div class="toc"><p><b>目录</b></p><dl><dt><span class="sect1"><a href="ch10s01.html">1. 单步执行和跟踪函数调用</a></span></dt><dt><span class="sect1"><a href="ch10s02.html">2. 断点</a></span></dt><dt><span class="sect1"><a href="ch10s03.html">3. 观察点</a></span></dt><dt><span class="sect1"><a href="ch10s04.html">4. 段错误</a></span></dt></dl></div><p>程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪。到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入<code class="literal">printf</code>,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了,如果结果和预期的不一样,就根据结果做进一步的假设和分析。本章我们介绍一种很强大的调试工具<code class="literal">gdb</code>,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状态,比如各变量的值、传给函数的参数、当前执行的代码行等。掌握了<code class="literal">gdb</code>的用法之后,调试手段就更加丰富了。但要注意,即使调试手段丰富了,调试的基本思想仍然是“<span class="quote">分析现象->假设错误原因->产生新的现象去验证假设</span>”这样一个循环,根据现象如何假设错误原因,以及如何设计新的现象去验证假设,这都需要非常严密的分析和思考,如果因为手里有了强大的工具就滥用而忽略了分析过程,往往会治标不治本地修正Bug,导致一个错误现象消失了但Bug仍然存在,甚至是把程序越改越错。本章通过初学者易犯的几个错误实例来讲解如何使用<code class="literal">gdb</code>调试程序,在每个实例后面总结一部分常用的<code class="literal">gdb</code>命令。</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch09s05.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="pt01.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch10s01.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">5. indent工具 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 1. 单步执行和跟踪函数调用</td></tr></table></div></body></html>