《LinuxC程序设计》PPT课件.ppt

上传人:sh****n 文档编号:12562092 上传时间:2020-05-11 格式:PPT 页数:52 大小:2.37MB
返回 下载 相关 举报
《LinuxC程序设计》PPT课件.ppt_第1页
第1页 / 共52页
《LinuxC程序设计》PPT课件.ppt_第2页
第2页 / 共52页
《LinuxC程序设计》PPT课件.ppt_第3页
第3页 / 共52页
点击查看更多>>
资源描述
LinuxC程序设计,主要内容Linux编程风格Linux下IDE的使用(三种)Linux下使用GNUcc开发应用程序Linux程序的调试,12.1概述,12.1.1Linux编程Linux软件开发一直在Internet环境下进行。这个环境是全球性的,编程人员来自世界各地。只要能够访问Web站点,就可以启动一个以Linux为基础的软件项目。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。当开发工作完成后,该软件就被放到Internet站点上,任何用户都可以访问和下载它。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。大多数Linux软件是经过自由软件基金会(FreeSoft-wareFoundation)提供的GNU(GNU即GNUsnotUNIX)公开认证授权的,因而通常被称作GNU软件。GNU软件免费提供给用户使用,并被证明是非常可靠和高效的。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。,Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。例如编程时,先用普通的编程语言生成一系列指令,这些指令可被翻译为适当的可执行应用程序的二进制代码。这个翻译过程可由解释器一步步来完成,或者也可以立即由编译器明确地完成。shell编程语言如BASH、TCSH、GAWK、Perl、Tcl和Tk都利用自己的解释器。用这些语言编制的程序尽管是应用程序文件,但可以直接运行。编译器则不同,它将生成一个独立的二进制代码文件然后才可以运行。,12.1.2Linux编程风格,(1)函数返回类型说明和函数名分两行放置,函数起始字符和函数开头左花括号放到最左边。(2)尽量不要让两个不同优先级的操作符出现在相同的对齐方式中,应该附加额外的括号使得代码缩进可以表示出嵌套。(3)每个程序都应该以一段简短的说明其功能的注释开头。(4)请为每个函数书写注释,说明函数是做什么的,需要哪些入口参数,参数可能值的含义和用途。如果用了非常见的、非标准的东西,或者可能导致函数不能工作的任何可能的值,应该进行特殊说明。如果存在重要的返回值,也需要说明。(5)不要声明多个变量时跨行,每一行都以一个新的声明开头。(6)当一个if中嵌套了另一个if-else时,应用花括号把if-else括起来。(7)要在同一个声明中同时说明结构标识和变量或者结构标识和类型定义(typedef)。先定义变量,再使用。,1GNU风格,(8)尽量避免在if的条件中进行赋值。(9)请在名字中使用下划线以分割单词,尽量使用小写;把大写字母留给宏和枚举常量,以及根据统一惯例使用的前缀。例如,应该使用类似ignore_space_change_flag的名字;不要使用类似iCantReadThis的名字。(10)用于表明一个命令行选项是否给出的变量应该在选项含义的说明之后,而不是选项字符之后被命名。,2Linux内核编程风格,(1)Linux内核缩进风格是8个字符。(2)Linux内核风格采用Kreturn0;接下来就要使用Autoconf及Automake来产生Makefile文件,步骤如下:(1)autoscan产生一个configure.in的模板,执行autoscan后会产生一个configure.scan的文件,可以用它做为configure.in文件的模板:(2)编辑configure.scan文件,并且把文件名改成configure.in(3)执行aclocal和autoconf,分别会产生aclocal.m4及configure两个文件:(4)编辑Makefile.am文件,内容如下:AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c(5)执行automake-add-missing,Automake会根据Makefile.am产生一些文件,包含最重要的Makefile.in:,(6)最后执行./configure:现在你的目录下已经产生了一个Makefile文件,执行make命令就可以开始编译hello.c成执行文件,最后执行./hello:#makegcc-DPACKAGE=hello-DVERSION=1.0-I.-I.-g-O2-chello.cgcc-g-O2-ohellohello.o#./helloHello!GNU!,12.4调试工具GDB,12.4.1GDB调试器简介,Linux系统中包含了GNU调试程序gdb,它是一个用来调试C和C+程序的调试器。可以使程序开发者在程序运行时观察程序的内部结构和内存的使用情况。gdb所提供的一些功能如下所示:运行程序,设置所有的能影响程序运行的参数和环境;控制程序在指定的条件下停止运行;,当程序停止时,可以检查程序的状态;修改程序的错误,并重新运行程序;动态监视程序中变量的值;可以单步执行代码,观察程序的运行状态。,gdb的功能非常强大,到目前为止,gdb已能够支持Moduls-2、Chill、Pascal和FORTRAN程序的调试,但是调试这些语言的源程序时有一些功能还不能使用。例如调试FORTRAN程序时还不支持表达式的输入、输出变量或类FORTRAN的词法。gdb程序调试的对象是可执行文件,而不是程序的源代码文件。然而,并不是所有的可执行文件都可以用gdb调试。如果要让产生的可执行文件可以用来调试,需在执行gcc指令编译程序时,加上-g参数,指定程序在编译时包含调试信息。调试信息包含程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。,在命令行上输入gdb并按回车键就可以运行gdb了,如果一切正常的话,将启动gdb,可以在屏幕上看到以下的内容:,GNUgdbRedHatLinux(5.3post-0.20021129.18rh)Copyright2003FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.Typeshowcopyingtoseetheconditions.ThereisabsolutelynowarrantyforGDB.Typeshowwarrantyfordetails.ThisGDBwasconfiguredasi386-redhat-linux-gnu.(gdb)启动gdb后,可以在命令行上指定很多的选项。输入:help可以获得gdb的帮助信息。如果想要了解某个具体命令(比如break)的帮助信息,在gdb提示符下输入下面的命令:break屏幕上会显示关于break的帮助信息。从返回的信息可知,break是用于设置断点的命令。另一个获得gdb帮助的方法是浏览gdb的手册页。在LinuxShell提示符输入:mangdb可以看到man的手册页。,12.4.2GDB命令的基本使用和应用,1gdb基本命令,还可以用下面的方式来运行gdb:gdbfilename其中,filename是要调试的可执行文件。用这种方式运行gdb可以直接指定想要调试的程序。这和启动gdb后执行filefilename命令效果完全一样。也可以用gdb去检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。gdb支持很多的命令且能实现不同的功能。这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令,下面列出了在使用gdb调试时会用到的一些命令。1)file命令:装入想要调试的可执行文件。2)cd命令:改变工作目录。3)pwd命令:返回当前工作日录。4)run命令:执行当前被调试的程序。5)kill命令:停止正在调试的应用程序。,6)list命令:列出正在调试的应用程序的源代码。7)break命令:设置断点。8)Tbreak命令;设置临时断点。它的语法与break相同。区别在于用tbreak设置的断点执行一次之后立即消失。9)watch命令:设置监视点,监视表达式的变化。10)awatch命令:设置读写监视点。当要监视的表达式被读或写时将应用程序挂起。它的语法与watch命令相同。11)rwatch命令:设置读监视点,当监视表达式被读时将程序挂起,等侍调试。此命令的语法与watch相同。12)next命令:执行下一条源代码,但是不进入函数内部。也就是说,将一条函数调用作为一条语句执行。执行这个命令的前提是已经run,开始了代码的执行。13)step命令:执行下一条源代码,进入函数内部。如果调用了某个函数,会跳到函数所在的代码中等候一步步执行。执行这个命令的前提是已经用run开始执行代码。14)display命令:在应用程序每次停止运行时显示表达式的值。15)infobreak命令:显示当前断点列表,包括每个断点到达的次数。,16)infofiles命令:显示调试文件的信息。17)infofunc命令:显示所有的函数名。18)infolocal命令:显示当前函数的所有局部变量的信息。19)infoprog命令:显示调试程序的执行状态。20)print命令;显示表达式的值。21)delete命令:删除断点。指定一个断点号码,则删除指定断点。不指定参数则删除所有的断点。22)Shell命令:执行LinuxShell命令。23)make命令:不退出gdb而重新编译生成可执行文件。24)Quit命令:退出gdb。,2gdb应用实例,下面使用gdb调试程序来调试一个实例。被调试的程序相当的简单,但展示了gdb的典型应用。下面列出了将被调试的程序代码,这个程序被称为greeting.c,功能是显示一个简单的问候,再用反序将它列出。,12.5Linux程序设计实例演示,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!