⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000007.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;TJB&nbsp;(老六),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;GDB&nbsp;(6)&nbsp;Part&nbsp;One&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木调试站&nbsp;(Wed&nbsp;Jun&nbsp;&nbsp;3&nbsp;08:33:46&nbsp;1998)&nbsp;<BR>&nbsp;<BR>发信人:&nbsp;SYSOP&nbsp;(老六),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;GDB&nbsp;<BR>发信站:&nbsp;侠剑情缘&nbsp;&nbsp;(Tue&nbsp;Jun&nbsp;&nbsp;2&nbsp;16:08:28&nbsp;1998),&nbsp;转信&nbsp;<BR>&nbsp;<BR>信件提要:gdb(六)&nbsp;<BR>原发信站:中国科大BBS站(Fri,&nbsp;03&nbsp;Apr&nbsp;1998&nbsp;01:27:22)&nbsp;<BR>&nbsp;<BR>东西太多了,翻起来好费时间,只好慢慢的贴了。//shy&nbsp;<BR>如果有人愿意一起做这件事的话请回信到我信箱。&nbsp;<BR>&nbsp;<BR>得到帮助&nbsp;<BR>============&nbsp;<BR>&nbsp;&nbsp;&nbsp;你可以使用help命令来得到gdb的在线帮助。&nbsp;<BR>&nbsp;<BR>`help'&nbsp;<BR>`h'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以使用help或h后面不加任何参数来得到一个gdb命令类的列表。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gdb)&nbsp;help&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;of&nbsp;classes&nbsp;of&nbsp;commands:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;running&nbsp;--&nbsp;Running&nbsp;the&nbsp;program&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack&nbsp;--&nbsp;Examining&nbsp;the&nbsp;stack&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;--&nbsp;Examining&nbsp;data&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;breakpoints&nbsp;--&nbsp;Making&nbsp;program&nbsp;stop&nbsp;at&nbsp;certain&nbsp;points&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;--&nbsp;Specifying&nbsp;and&nbsp;examining&nbsp;files&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;--&nbsp;Status&nbsp;inquiries&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;support&nbsp;--&nbsp;Support&nbsp;facilities&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user-defined&nbsp;--&nbsp;User-defined&nbsp;commands&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aliases&nbsp;--&nbsp;Aliases&nbsp;of&nbsp;other&nbsp;commands&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obscure&nbsp;--&nbsp;Obscure&nbsp;features&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&quot;help&quot;&nbsp;followed&nbsp;by&nbsp;a&nbsp;class&nbsp;name&nbsp;for&nbsp;a&nbsp;list&nbsp;of&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commands&nbsp;in&nbsp;that&nbsp;class.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&quot;help&quot;&nbsp;followed&nbsp;by&nbsp;command&nbsp;name&nbsp;for&nbsp;full&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;documentation.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command&nbsp;name&nbsp;abbreviations&nbsp;are&nbsp;allowed&nbsp;if&nbsp;unambiguous.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gdb)&nbsp;<BR>&nbsp;<BR>`help&nbsp;CLASS'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用上面列出的help&nbsp;class作为help或h的参量,你可以得到单一的命令列表。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如显示一个'status'类的列表。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gdb)&nbsp;help&nbsp;status&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status&nbsp;inquiries.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;of&nbsp;commands:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show&nbsp;--&nbsp;Generic&nbsp;command&nbsp;for&nbsp;showing&nbsp;things&nbsp;set&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;&quot;set&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;--&nbsp;Generic&nbsp;command&nbsp;for&nbsp;printing&nbsp;status&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&quot;help&quot;&nbsp;followed&nbsp;by&nbsp;command&nbsp;name&nbsp;for&nbsp;full&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;documentation.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command&nbsp;name&nbsp;abbreviations&nbsp;are&nbsp;allowed&nbsp;if&nbsp;unambiguous.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gdb)&nbsp;<BR>&nbsp;<BR>`help&nbsp;COMMAND'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;详细列出单个命令的资料。&nbsp;<BR>&nbsp;<BR>`complete&nbsp;ARGS'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;列出所有以ARGS开头的命令。例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complete&nbsp;i&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;results&nbsp;in:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inspect&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ignore&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;is&nbsp;intended&nbsp;for&nbsp;use&nbsp;by&nbsp;GNU&nbsp;Emacs.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;除了使用'help'你还可以使用gdb的命令'info'和'show'来查询你程序的&nbsp;<BR>状态,每个命令可以查询一系列的状态。这些命令以恰当的方式显示所有的&nbsp;<BR>子命令。&nbsp;<BR>&nbsp;<BR>`info'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此命令(可以缩写为'i')用来显示你程序的状态。比如,你可以使用info&nbsp;<BR>args&nbsp;列出你程序所接受的命令行参数。使用info&nbsp;registers列出寄存器的状态。&nbsp;<BR>或用info&nbsp;breakpoint列出在程序中设的断点。要获得详细的关于info的信息打&nbsp;<BR>help&nbsp;info.&nbsp;<BR>`set'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个命令用来为你的程序设置一个运行环境(使用一个表达式)。比如你&nbsp;<BR>可以用set&nbsp;prompt&nbsp;$来把gdb的提示符设为$.&nbsp;<BR>&nbsp;<BR>`show'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与'info'相反,'show'命令用来显示gdb自身的状态。你使用'set'命令来&nbsp;<BR>可以改变绝大多数由'show'显示的信息。比如使用show&nbsp;radix命令来显示基数。&nbsp;<BR>用不带任何参变量的'set'命令你可以显示所有你可以设置的变量的值。&nbsp;<BR>有三个变量是不可以用'set'命令来设置的。&nbsp;<BR>`show&nbsp;version'&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示gdb的版本号。如果你发现gdb有bug的话你应该在bug-reports里加&nbsp;<BR>入gdb的版本号。&nbsp;<BR>&nbsp;<BR>`show&nbsp;copying'&nbsp;<BR>显示版权信息。&nbsp;<BR>&nbsp;<BR>`show&nbsp;warranty'&nbsp;<BR>显示担保信息。&nbsp;<BR>在gdb下运行你的程序&nbsp;<BR>**************************&nbsp;<BR>&nbsp;&nbsp;&nbsp;当你在gdb下运行程序时,你必须先为gdb准备好带有调试信息的可执行文档。&nbsp;<BR>还可以在gdb中为你的程序设置参变量,重定向你程序的输入/输出,设置环境变&nbsp;<BR>量,调试一个已经执行的程序或kill掉一个子进程。&nbsp;<BR>&nbsp;&nbsp;&nbsp;这里许多内容在早先的例子中都已经用到过,可以参见gdb(二)。&nbsp;<BR>目录:&nbsp;<BR>&nbsp;<BR>*&nbsp;编译::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为调试编译带调试信息的代码&nbsp;<BR>*&nbsp;运行::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运行你的程序&nbsp;<BR>*&nbsp;参变量::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为你的程序设置参变量&nbsp;<BR>*&nbsp;运行环境::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为你的程序设置运行时环境&nbsp;<BR>*&nbsp;设置工作目录::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在gdb中设置程序的工作目录。&nbsp;<BR>*&nbsp;输入/输出::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定你程序的输入和输出&nbsp;<BR>*&nbsp;连接::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试一个已经运行的程序&nbsp;<BR>*&nbsp;结束子进程::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kill子进程&nbsp;<BR>*&nbsp;进程信息::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;附加的进程信息&nbsp;<BR>*&nbsp;线程::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试带多线程的程序&nbsp;<BR>*&nbsp;多进程::&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试带多进程的程序&nbsp;<BR>为调试准备带调试信息的代码&nbsp;<BR>===========================&nbsp;<BR>&nbsp;&nbsp;&nbsp;为了高效的调试一个程序,你需要使用编译器来产生附带调试信息的可执行代码&nbsp;<BR>这些调试信息存储在目标文件中;描述了变量数据类型和函数声明,在原文件代码行&nbsp;<BR>和执行代码之间建立联系。&nbsp;<BR>&nbsp;&nbsp;&nbsp;为产生调试信息,当你使用编译器时指定'-g'选项,就可以为你的程序产生带有&nbsp;<BR>调试信息的可执行代码。&nbsp;<BR>&nbsp;&nbsp;&nbsp;有些c编译器不支持'-g'选项和'-O'选项,那你就有麻烦了,或者有别的方法产生&nbsp;<BR>带调试信息的可执行代码,要不就没办法了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;gcc,GNU的c语言编译器支持'-g'和'-O'选项。这样你就可以产生带调试信息的且&nbsp;<BR>优化过的可执行代码.&nbsp;<BR>&nbsp;&nbsp;&nbsp;当你使用gdb来调试一个使用'-g','-O'选项产生的程序时,千万记住编译器为了优&nbsp;<BR>化你的程序重新安排了你的程序。不要为运行次序与你原来设想的不同,最简单的例子&nbsp;<BR>就是当你定义了一个变量但从未使用过它时,gdb中是看不到这个变量的--因为它已经&nbsp;<BR>被优化掉了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;所以有时你不要使用'-O'选项,如果当你不用优化时产生的程序是正确的,而优化&nbsp;<BR>过后变的不正确了,那么这是编译器的bug你可以向开发者提供bug-reports(包括出错&nbsp;<BR>的例子)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;早期的GUN&nbsp;C语言编译器允许'-gg'选项,也用来产生调试信息,gdb不再支持这种格&nbsp;<BR>式的调试信息,如果你的编译器支持'-gg'选项,请不要使用它。&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:&nbsp;中国科大BBS站&nbsp;[bbs.ustc.edu.cn]&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>☆&nbsp;来源:.侠剑情缘&nbsp;tjb.ml.org.[FROM:&nbsp;<A HREF="mailto:root@tjb.ml.org]">root@tjb.ml.org]</A>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木调试站&nbsp;Leeward.lib.tsinghua.edu.cn·[FROM:&nbsp;202.200.37.100]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -