- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
gcc与gdb使用
gcc与gdb使用 多个源文件生成一个可执行文件 问题:有多个源文件时,如何生成一个可执行文件? 方法1:gcc –Wall –o mytest test1.c test2.c test3.c 方法2: gcc-Wall -c test1.c gcc-Wall –c test2.c gcc-Wall –c test3.c gcc –o mytest test1.o test2.o test3.o 用gdb调试GCC程序 gdb是一个用来调试C和C++程序的常用调试工具之一。 gdb所提供的一些功能: 监视程序中变量的值。 设置断点以使程序在指定的代码行上停止执行。 逐行执行代码。 分析崩溃程序的产生的core文件 gdb基本用法 需要调试的程序,在编译时要使用调试选项。在默认的情况下,调试符号不会编译到程序中。调试之后,不需要重新编译程序。 gdb [filename] 出现 (gdb) 在这里,可以输入调试命令 基本gdb命令 file装入想要调试的可执行文件。 kill终止正在调试的程序。 list执行一行源代码但不进入函数内部。 next执行一行源代码但不进入函数内部。 step执行一行源代码而且进入函数内部。 run执行当前被调试的程序 quit终止 gdb watch使你能监视一个变量的值而不管它何时被改变。 break在代码里设置断点, 这将使程序执行到这里时被挂起。 make使你能不退出 gdb 就可以重新产生可执行文件。 shell使你能不离开 gdb 就执行 UNIX shell 命令。 List 显示程序内容,一般10行 List 函数名:显示函数对应内容 List 行号:显示该行周围的源代码 Set listsize 行数:设置显示代码的行数 Show listsize :显示当前listsize的设置 List first,last:显示first和last之间的内容 Ctrl+c 发信号量中断当前操作 Info break:显示断点信息 Delete n:去除第几号断点 Disable n:暂停使用某个断点 Enable n:启动某个暂停的断点 Break:从后向前清除断点 Continue:继续运行 调试实例 1.在 gdb 提示符下键入 list 命令三次, 列出源代码:(注:按回车健将重复上一个命令 ) 2.根据列出的源程序, 你能看到要设断点的地方在第22行, 在 gdb 命令行提示符下键入如下命令设置断点: (gdb) break 22 3.键入 run 命令, 继续执行 4.设置一个观察 string2[size - i] 变量的值的观察点来看出错误是怎样产生的, 做法是键入: (gdb) display string2[size - i] 5.根据情况使用print命令查看表达式的值,判断错误出现的位置,进行错误改正 程序自动维护工具make 问题:当开发的程序非常庞大,且关系复杂,手工编译链接非常困难 解决: 利用一个自动系统控制和协调整个程序的创建过程。在这个自动系统中,程序员可以定义创建规则并通过这个规则进行项目的开发。 makefile就是定义这种规则的文件。GNU make 解释执行makefile。 程序自动维护工具make make是一种自动生成和维护目标程序的工具。 可以调用编译器、连接器等 根据程序各部分的修改情况,重新编译链接目标代码 输入make命令后,系统自动检测系统文件和以定义的规则,完成整个创建过程 Vi makefile Main:main.o haha.o sin_value.o cos_value.o gcc –o main.o haha.o sin_value.o cos_value.o –lm 使用make两次,发现成功实现可执行文件的产生,并且自动检查文件的更新情况 优点: 简化编译时所需要执行的命令 编译完成后,修改某个源码文件,则make仅会对被修改了的文件进行编译,其他的目标文件不会被更改 最后可以依照相依性来更新执行文件 程序自动维护工具make 目标(target):目标文件1 目标文件2 tab gcc -o 欲新建可执行文件 目标1 目标2 注意:命令行必须以tab按键开头 如果两个以上的规则,可添加 Clean: rm –f main main.o haha.o sin_value.o cos_value.o Vi makefile LIBS=-lm OBJS=main.o haha.o sin_value.o cos_value.o Main:${OBJS} gcc –o main ${OBJS} ${LIBS} Clean: rm
文档评论(0)