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

📄 00000009.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdi.h&nbsp;misc.h&nbsp;common.h&nbsp;<BR>window.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu.h&nbsp;fixstr.h&nbsp;cliprect.h&nbsp;window.h&nbsp;event.h&nbsp;cursor.h&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdi.h&nbsp;misc.h&nbsp;common.h&nbsp;<BR>menu.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu.h&nbsp;fixstr.h&nbsp;cliprect.h&nbsp;window.h&nbsp;event.h&nbsp;cursor.h&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdi.h&nbsp;misc.h&nbsp;common.h&nbsp;<BR>fixstr.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fixstr.h&nbsp;common.h&nbsp;<BR>timer.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.h&nbsp;window.h&nbsp;gdi.h&nbsp;cliprect.h&nbsp;inline.h&nbsp;common.h&nbsp;<BR>dti.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu.h&nbsp;window.h&nbsp;gdi.h&nbsp;cliprect.h&nbsp;inline.h&nbsp;common.h&nbsp;<BR>main.o:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.h&nbsp;common.h&nbsp;<BR>―――――――――――――――――――――――――――――――――――――――&nbsp;<BR>在上面的&nbsp;makefile&nbsp;文件中,定义了多个目标以及和其他源文件的依赖关系。我们可&nbsp;<BR>以注意到上述&nbsp;makefile&nbsp;中定义了一些变量,同时使用&nbsp;GNU&nbsp;make&nbsp;的内置隐含规则编译各&nbsp;<BR>个&nbsp;.c&nbsp;源文件。执行&nbsp;make&nbsp;命令时的输出如下:&nbsp;<BR>[WeiYM@rocket&nbsp;src]$&nbsp;make&nbsp;clean&nbsp;<BR>rm&nbsp;-f&nbsp;*.o&nbsp;*~&nbsp;.*.swp&nbsp;.*.swo&nbsp;<BR>[WeiYM@rocket&nbsp;src]$&nbsp;make&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;testgui.c&nbsp;-o&nbsp;testgui.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;misc.c&nbsp;-o&nbsp;misc.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;gdi.c&nbsp;-o&nbsp;gdi.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;cursor.c&nbsp;-o&nbsp;cursor.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;event.c&nbsp;-o&nbsp;event.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;desktop.c&nbsp;-o&nbsp;desktop.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;window.c&nbsp;-o&nbsp;window.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;main.c&nbsp;-o&nbsp;main.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;cliprect.c&nbsp;-o&nbsp;cliprect.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;menu.c&nbsp;-o&nbsp;menu.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;fixstr.c&nbsp;-o&nbsp;fixstr.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;timer.c&nbsp;-o&nbsp;timer.o&nbsp;<BR>gcc&nbsp;-O2&nbsp;-Wall&nbsp;-m486&nbsp;-D_REENTRANT&nbsp;&nbsp;&nbsp;-c&nbsp;dti.c&nbsp;-o&nbsp;dti.o&nbsp;<BR>gcc&nbsp;-o&nbsp;testgui&nbsp;testgui.o&nbsp;misc.o&nbsp;gdi.o&nbsp;cursor.o&nbsp;event.o&nbsp;desktop.o&nbsp;window.o&nbsp;main.d&nbsp;<BR>13.3.3.5&nbsp;&nbsp;make&nbsp;命令的常用选项&nbsp;<BR>我们知道,直接在&nbsp;make&nbsp;命令的后面键入目标名可建立指定的目标,如果直接运行&nbsp;&nbsp;<BR>make,则建立第一个目标。我们还知道可以用&nbsp;make&nbsp;-f&nbsp;mymakefile&nbsp;这样的命令指定&nbsp;make&nbsp;&nbsp;<BR>使用特定的&nbsp;makefile,而不是默认的&nbsp;GNUmakefile、makefile&nbsp;或&nbsp;Makefile。但&nbsp;GNU&nbsp;make&nbsp;&nbsp;<BR>命令还有一些其他选项,表&nbsp;13-3&nbsp;给出了这些选项。&nbsp;<BR>表&nbsp;13-3&nbsp;&nbsp;GNU&nbsp;make&nbsp;命令的常用命令行选项&nbsp;<BR>命令行选项&nbsp;<BR>含义&nbsp;<BR>-C&nbsp;DIR&nbsp;<BR>在读取&nbsp;makefile&nbsp;之前改变到指定的目录&nbsp;DIR。&nbsp;<BR>-f&nbsp;FILE&nbsp;<BR>以指定的&nbsp;FILE&nbsp;文件作为&nbsp;makefile。&nbsp;<BR>-h&nbsp;<BR>显示所有的&nbsp;make&nbsp;选项。&nbsp;<BR>-i&nbsp;<BR>忽略所有的命令执行错误。&nbsp;<BR>-I&nbsp;DIR&nbsp;<BR>当包含其他&nbsp;makefile&nbsp;文件时,可利用该选项指定搜索目录。&nbsp;<BR>-n&nbsp;<BR>只打印要执行的命令,但不执行这些命令。&nbsp;<BR>-p&nbsp;<BR>显示&nbsp;make&nbsp;变量数据库和隐含规则。&nbsp;<BR>-s&nbsp;<BR>在执行命令时不显示命令。&nbsp;<BR>-w&nbsp;<BR>在处理&nbsp;makefile&nbsp;之前和之后,显示工作目录。&nbsp;<BR>-W&nbsp;FILE&nbsp;<BR>假定文件&nbsp;FILE&nbsp;已经被修改。&nbsp;<BR>&nbsp;<BR>13.3.4&nbsp;&nbsp;GNU&nbsp;的调试器&nbsp;<BR>GNU&nbsp;的调试器称为&nbsp;gdb,该程序是一个交互式工具,工作在字符模式。在&nbsp;X&nbsp;Window&nbsp;系&nbsp;<BR>统中,有一个&nbsp;gdb&nbsp;的前端图形工具,称为&nbsp;xxgdb。gdb&nbsp;是功能强大的调试程序,可完成&nbsp;<BR>如下的调试任务:&nbsp;<BR>?&nbsp;设置断点;&nbsp;<BR>?&nbsp;监视程序变量的值;&nbsp;<BR>?&nbsp;程序的单步执行;&nbsp;<BR>?&nbsp;修改变量的值。&nbsp;<BR>在可以使用&nbsp;gdb&nbsp;调试程序之前,必须使用&nbsp;-g&nbsp;选项编译源文件。可在&nbsp;makefile&nbsp;中&nbsp;<BR>如下定义&nbsp;CFLAGS&nbsp;变量:&nbsp;<BR>CFLAGS&nbsp;=&nbsp;-g&nbsp;<BR>13.3.4.1&nbsp;&nbsp;运行&nbsp;gdb&nbsp;<BR>运行&nbsp;gdb&nbsp;调试程序时通常使用如下的命令:&nbsp;<BR>gdb&nbsp;progname&nbsp;<BR>执行上述命令之后,gdb&nbsp;将显示一个命令提示行:&nbsp;<BR>[WeiYM@rocket&nbsp;src]$&nbsp;gdb&nbsp;testgui&nbsp;<BR>GNU&nbsp;gdb&nbsp;4.17.0.4&nbsp;with&nbsp;Linux/x86&nbsp;hardware&nbsp;watchpoint&nbsp;and&nbsp;FPU&nbsp;support&nbsp;<BR>Copyright&nbsp;1998&nbsp;Free&nbsp;Software&nbsp;Foundation,&nbsp;Inc.&nbsp;<BR>GDB&nbsp;is&nbsp;free&nbsp;software,&nbsp;covered&nbsp;by&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License,&nbsp;and&nbsp;you&nbsp;are&nbsp;<BR>welcome&nbsp;to&nbsp;change&nbsp;it&nbsp;and/or&nbsp;distribute&nbsp;copies&nbsp;of&nbsp;it&nbsp;under&nbsp;certain&nbsp;conditions.&nbsp;<BR>Type&nbsp;&quot;show&nbsp;copying&quot;&nbsp;to&nbsp;see&nbsp;the&nbsp;conditions.&nbsp;<BR>There&nbsp;is&nbsp;absolutely&nbsp;no&nbsp;warranty&nbsp;for&nbsp;GDB.&nbsp;&nbsp;Type&nbsp;&quot;show&nbsp;warranty&quot;&nbsp;for&nbsp;details.&nbsp;<BR>This&nbsp;GDB&nbsp;was&nbsp;configured&nbsp;as&nbsp;&quot;i386-redhat-linux&quot;...&nbsp;<BR>(no&nbsp;debugging&nbsp;symbols&nbsp;found)...&nbsp;<BR>(gdb)&nbsp;<BR>(gdb)&nbsp;就是&nbsp;gdb&nbsp;的提示符。在&nbsp;gdb&nbsp;提示符处键入help,将列出命令的分类,主要的分&nbsp;<BR>类有:&nbsp;<BR>?&nbsp;aliases:命令别名&nbsp;<BR>?&nbsp;breakpoints:断点定义;&nbsp;<BR>?&nbsp;data:数据查看;&nbsp;<BR>?&nbsp;files:指定并查看文件;&nbsp;<BR>?&nbsp;internals:维护命令;&nbsp;<BR>?&nbsp;running:程序执行;&nbsp;<BR>?&nbsp;stack:调用栈查看;&nbsp;<BR>?&nbsp;statu:状态查看;&nbsp;<BR>?&nbsp;tracepoints:跟踪程序执行。&nbsp;<BR>键入&nbsp;help&nbsp;后跟命令的分类名,可获得该类命令的详细清单。例如,键入&nbsp;help&nbsp;stack,&nbsp;<BR>将得到如下的命令清单:&nbsp;<BR>(gdb)&nbsp;help&nbsp;stack&nbsp;<BR>Examining&nbsp;the&nbsp;stack.&nbsp;<BR>The&nbsp;stack&nbsp;is&nbsp;made&nbsp;up&nbsp;of&nbsp;stack&nbsp;frames.&nbsp;&nbsp;Gdb&nbsp;assigns&nbsp;numbers&nbsp;to&nbsp;stack&nbsp;frames&nbsp;<BR>counting&nbsp;from&nbsp;zero&nbsp;for&nbsp;the&nbsp;innermost&nbsp;(currently&nbsp;executing)&nbsp;frame.&nbsp;<BR>&nbsp;<BR>(lines&nbsp;deleted)&nbsp;<BR>&nbsp;<BR>List&nbsp;of&nbsp;commands:&nbsp;<BR>&nbsp;<BR>backtrace&nbsp;--&nbsp;Print&nbsp;backtrace&nbsp;of&nbsp;all&nbsp;stack&nbsp;frames&nbsp;<BR>bt&nbsp;--&nbsp;Print&nbsp;backtrace&nbsp;of&nbsp;all&nbsp;stack&nbsp;frames&nbsp;<BR>down&nbsp;--&nbsp;Select&nbsp;and&nbsp;print&nbsp;stack&nbsp;frame&nbsp;called&nbsp;by&nbsp;this&nbsp;one&nbsp;<BR>frame&nbsp;--&nbsp;Select&nbsp;and&nbsp;print&nbsp;a&nbsp;stack&nbsp;frame&nbsp;<BR>return&nbsp;--&nbsp;Make&nbsp;selected&nbsp;stack&nbsp;frame&nbsp;return&nbsp;to&nbsp;its&nbsp;caller&nbsp;<BR>select-frame&nbsp;--&nbsp;Select&nbsp;a&nbsp;stack&nbsp;frame&nbsp;without&nbsp;printing&nbsp;anything&nbsp;<BR>up&nbsp;--&nbsp;Select&nbsp;and&nbsp;print&nbsp;stack&nbsp;frame&nbsp;that&nbsp;called&nbsp;this&nbsp;one&nbsp;<BR>要退出&nbsp;gdb&nbsp;时,只需在提示符处键入&nbsp;q&nbsp;并按&nbsp;Enter&nbsp;键。&nbsp;<BR>表&nbsp;13-4&nbsp;&nbsp;列出了常用的&nbsp;gdb&nbsp;命令。&nbsp;<BR>表&nbsp;13-4&nbsp;&nbsp;常用的&nbsp;gdb&nbsp;命令&nbsp;<BR>命令&nbsp;<BR>解释&nbsp;<BR>break&nbsp;NUM&nbsp;<BR>在指定的行上设置断点。&nbsp;<BR>bt&nbsp;<BR>显示所有的调用栈帧。该命令可用来显示函数的调用顺序。&nbsp;<BR>clear&nbsp;<BR>删除设置在特定源文件、特定行上的断点。其用法为:clear&nbsp;FILENAME:NUM。&nbsp;<BR>continue&nbsp;<BR>继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。&nbsp;<BR>display&nbsp;EXPR&nbsp;<BR>每次程序停止后显示表达式的值。表达式由程序定义的变量组成。&nbsp;<BR>file&nbsp;FILE&nbsp;<BR>装载指定的可执行文件进行调试。&nbsp;<BR>help&nbsp;NAME&nbsp;<BR>显示指定命令的帮助信息。&nbsp;<BR>info&nbsp;break&nbsp;<BR>显示当前断点清单,包括到达断点处的次数等。&nbsp;<BR>info&nbsp;files&nbsp;<BR>显示被调试文件的详细信息。&nbsp;<BR>info&nbsp;func&nbsp;<BR>显示所有的函数名称。&nbsp;<BR>info&nbsp;local&nbsp;<BR>显示当函数中的局部变量信息。&nbsp;<BR>info&nbsp;prog&nbsp;<BR>显示被调试程序的执行状态。&nbsp;<BR>info&nbsp;var&nbsp;<BR>显示所有的全局和静态变量名称。&nbsp;<BR>kill&nbsp;<BR>终止正被调试的程序。&nbsp;<BR>list&nbsp;<BR>显示源代码段。&nbsp;<BR>make&nbsp;<BR>在不退出&nbsp;gdb&nbsp;的情况下运行&nbsp;make&nbsp;工具。&nbsp;<BR>next&nbsp;<BR>在不单步执行进入其他函数的情况下,向前执行一行源代码。&nbsp;<BR>print&nbsp;EXPR&nbsp;<BR>显示表达式&nbsp;EXPR&nbsp;的值。&nbsp;<BR>quit&nbsp;<BR>退出&nbsp;gdb。&nbsp;<BR>set&nbsp;variable&nbsp;<BR>设置变量的值,语法为&nbsp;set&nbsp;variable&nbsp;VAR=VALUE。&nbsp;<BR>shell&nbsp;CMD&nbsp;<BR>在不退出&nbsp;gdb&nbsp;的情况下执行&nbsp;Shell&nbsp;命令。&nbsp;<BR>step&nbsp;<BR>向前执行一行源代码,如果可能,跳入调用函数执行。&nbsp;<BR>watch&nbsp;VAR&nbsp;<BR>当变量&nbsp;VAR&nbsp;的值发生变化时,显示该变量的值。&nbsp;<BR>where&nbsp;<BR>显示调用序列。根据该命令的输出,可查找程序出问题的地方。&nbsp;<BR>x/F&nbsp;ADDR&nbsp;<BR>检查内存地址为&nbsp;ADDR&nbsp;的内容,F&nbsp;指定显示的格式。可取&nbsp;<BR>x:十六进制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o:八进制&nbsp;&nbsp;&nbsp;&nbsp;d:十进制&nbsp;<BR>u:无符号十进制&nbsp;&nbsp;&nbsp;&nbsp;t:二进制&nbsp;&nbsp;&nbsp;&nbsp;f:浮点数等。&nbsp;<BR>ADDR&nbsp;一般取变量名称或指针名称。&nbsp;<BR>&nbsp;<BR>13.3.4.2&nbsp;&nbsp;使用&nbsp;gdb&nbsp;<BR>为了说明&nbsp;gdb&nbsp;的使用,我们编写一段有问题的程序,见清单&nbsp;13-4。&nbsp;<BR>

⌨️ 快捷键说明

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