您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第三讲:Linux下C程序编译和调试20100314
汇文教育HUIWENEDUCATIONLinux下C程序编译和调试•Slickedit编辑器的使用•GCC编译器的使用•GDB调试器的使用•Makefile的编写•静态库和动态库的生成和使用•练习:GameofLife•编程代码规范汇文教育HUIWENEDUCATIONSlickedit编辑器的使用汇文教育HUIWENEDUCATIONC程序简单实例分析汇文教育HUIWENEDUCATION•GNU(GNU’sNotUnix)项目是自由软件基金会(FreeSoftwareFoundation)的董事长RichardM.Stallman于1984年发起,意在软件开发团体中发起支持开发自由软件的运动。•GNU软件包括:C编译器gccC++编译器g++GNU的汇编器asGNU的链接器ld二进制转换工具(objcopy、objdump)调试工具(gdb、gdbserver、kgdb)和基于不同硬件平台的开发库。开发工具GNU的介绍汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATIONGCC编译器的使用汇文教育HUIWENEDUCATION调试器gdbgdb是GnuDeBugger的缩写,是GNUC的用来调试C和C++程序的调试工具。开发者在使用它时,可以了解程序在运行时的详细情况,如程序的内部结构和内存等信息。gdb能够通过完成以下几个任务来帮助你查找程序中的错误。•启动程序,设置影响程序运行的调试条件。•能使程序在特定条件下停止。•在程序停止时,检查程序的运行情况。•调整程序,改正错误后继续调试。GDB调试器的使用汇文教育HUIWENEDUCATION以下程序是汉诺塔的源程序:#includestdio.hmain(){voidhanoi(int,char,char,char);intm;printf(inputthenumberofdisks:);scanf(%d,&m);printf(Thesteptomoving%ddisks:\n,m);hanoi(m,'A','B','C');}voidhanoi(intn,chara,charb,charc){voidmove(char,char);if(n==1)move(a,c);else{hanoi(n-1,a,c,b);move(a,c);hanoi(n-1,b,a,c);}}voidmove(charx,chary){printf(%c--%c\n,x,y);}GDB调试器的使用汇文教育HUIWENEDUCATION为了方便调试可执行程序,可以用下面的语句来编译程序。#gcc–g–otesttest.c开始调试:#gdb–Qtest(gdb)1.查看源代码,使用list命令(gdb)list1#includestdio.h2main()3{4voidHanoi(int,char,char,char);5intm;6scanf(%d,&m);7printf(Thesteptomove%ddisks:\n,m);8hanoi(m,'A','B','C');9}10voidhanoi(intn,chara,charb,charc)(gdb)GDB调试器的使用汇文教育HUIWENEDUCATION2.运行源程序,使用run命令。(gdb)runStartingprogram/home/ding/test.exeInputthenumberofdisks;3Thesteptomove3disks:A--CA--BC--BA--CB--AB--CA--CProgramexitednormally(gdb)如上所述,使用run命令会执行一个可执行程序。GDB调试器的使用汇文教育HUIWENEDUCATION设置断点使用breakN命令来设置断点,N表示在源代码的第N行处设置断点,如果想看程序中断点数量与位置,可以使用infobreak命令来查看。清除断点gdb用clear指令来清除断点。它的使用格式如下;(gdb)clearn查看变量的值gdb用print指令查看变量的值。执行时键入print或p。如果想看变量的类型时,用whatis命令。单步执行gdb用step指令进行单步执行方式。此指令可以跟踪到函数内部,执行时键入step或s。另外一个指令是next指令,只用于单步执行,不进入到函数内部。退出程序调试如果程序执行完了,则直接退出。如果程序在执行中,则提示程序在执行中,是否要退出的提示,确认后即可结束调试。GDB调试器的使用汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATIONMakefile的编写汇文教育HUIWENEDUCATION静态库和动态库的生成和使用汇文教育HUIWENEDUCATION静态库和动态库的生成和使用汇文教育HUIWENEDUCATION静态库和动态库的生成和使用汇文教育HUIWENEDUCATION静态库和动态库的生成和使用汇文教育HUIWENEDUCATION静态库和动态库的生成和使用汇文教育HUIWENEDUCATION练习:GameofLife游戏规则:Foracellthatis‘alive':1,Eachcellwithoneornoneighborsdies,asifbyloneliness.2,Eachcellwithfourormoreneighborsdies,asifbyoverpopulation.3,Eachcellwithtwoorthreeneighborssurvives.Foracellthatis‘dead'4,Eachcellwiththreeneighborsbecomesalive.作业:编程实现GameofLife汇文教育HUIWENEDUCATIONQuestions?Thanks!
本文标题:第三讲:Linux下C程序编译和调试20100314
链接地址:https://www.777doc.com/doc-6472358 .html