- 1、本文档共86页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章linux c编程(二)
调试器gdb 程序调试的重要性 从软件工程的角度看,程序调试所占的工作量占整个软件开发总工作量的一半以上。 程序调试的目的是发现和改正程序中存在的各种问题和错误。 程序中的错误 程序中的错误可按性质分为三种: (1)编译错误,即语法错误,编译阶段发生的错误,如括号不成对,缺少分号等等。 (2)运行错误。程序运行期间发生的错误,如除数为零,死循环等等。 (3)逻辑错误。程序可以正常运行,但结果不正确。 对于前两种错误,计算机会给出提示;而逻辑错误计算机并不提示,全靠程序员自己检查,排除错误。 程序调试 程序调试的目的是在调试工具的作用下,通过上机运行程序,找出错误,并进行修改。 Gdb是GNU发布的一个功能强大的、在unix/linux上的c/c++和汇编语言程序的调试工具。 student@Ubuntu:~$gdb - -version //察看是否安装gdb Gdb的功能 Gdb主要在帮助用户调试程序时完成四方面的工作 1.能够运行程序,按照用户的要求影响程序的运行行为 2.能够让程序在指定条件处停止 3.能够在程序停止时检查所有的参数情况 4.能够根据指定条件改变程序的运行 Gdb的使用 为了发挥gdb的全部功能,可以在编译源程序时使用-g,打开调试选项。如: student@Ubuntu:~$ gcc -g prog.c -o prog (针对C语言源程序prog.c) Gdb的使用 启动gdb的方法有以下几种: (1)直接使用shell命令gdb student@Ubuntu:~$gdb (2)以一个可执行程序作为gdb的参数 student@Ubuntu:~$gdb prgm (3)同时以可执行程序和core文件作为gdb的参数。Core文件是运行程序造成core dump(内存信息转储)后产生的文件 student@Ubuntu:~$gdb prgm core (4)指定一个进程号PID作为gdb的第二个参数 student@Ubuntu:~$gdb prgm 1234 一旦启动gdb,就显示gdb提示符: (gdb) 并等待用户输入相应的gdb命令 Gdb使用 student@Ubuntu:~$gdb 如果一切正常的话, gdb 将被启动并且将在屏幕上看到类似的内容: GDB is free software and you are welcome to distribute copies of it under certain conditions; type show copying to see the conditions. There is absolutely no warranty for GDB; type show warranty for details. GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc. Gdb使用实例 /*下面列出了将被调试的程序. 这个程序被称为 greeting , 它显示一个简单的问候, 再用反序将它列出. */#include stdio.h#include stdlib.h?main (){char my_string[] = hello there;void my_print(char my_string[]);void my_print2(char my_string[]);my_print(my_string);my_print2(my_string);}void my_print(char string[]){printf(The string is %s\n,string);}void my_print2(char string[]){int i,size;size=11;char *string2 = (char *)malloc(size+1);for (i = 0; i11; i++)string2[size-i]=string[i];string2[size+1]=\0;printf(The string printed backward is %s\n,string2);} Gdb使用实例 用下面的命令编译它: student@Ubuntu:~$ gcc -g greeting.c -o greeting 这个程序执行时显示如下结果: The string is hello there The string printed backward is 输出的第一行是正确的,
您可能关注的文档
最近下载
- 科技馆项目-绿色建筑设计专篇.pdf VIP
- 仁爱科普版(2024)七年级上册 Unit 1 Let's Be Friends! 提升训练卷(含答案).docx VIP
- 《失智老年人照护》课件:失智老年人四肢被动活动相关知识.pptx VIP
- 汶川县七盘沟绿色工业集中区规划环评.pdf VIP
- 偏心压力机 - sms group.pdf VIP
- 医疗器械体系文件-文件控制程序及相关表单.pdf VIP
- 高危新生儿分类分级管理专家共识(2023)解读.pptx VIP
- 07J905-1 防火建筑构造(一).docx VIP
- 物业服务人员管理方案.docx VIP
- 高中数学知识点总结(全版).doc VIP
文档评论(0)