当前位置:
文档之家› gcc与gdb使用PPT课件
gcc与gdb使用PPT课件
21
优点:
▪ 简化编译时所需要执行的命令 ▪ 编译完成后,修改某个源码文件,则make
仅会对被修改了的文件进行编译,其他的 目标文件不会被更改
▪ 最后可以依照相依性来更新执行文件
2021
22
程序自动维护工具make
目标(target):目标文件1 目标文件2 <tab> gcc -o 欲新建可执行文件 目标1 目标2 注意:命令行必须以tab按键开头
▪ 方法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
2021
11
用gdb调试GCC程序
gdb是一个用来调试C和C++程序的常用调 试工具之一。
gdb所提供的一些功能:
2021
15
Ctrl+c 发信号量中断当前操作 Info break:显示断点信息 Delete n:去除第几号断点 Disable n:暂停使用某个断点 Enable n:启动某个暂停的断点 Break:从后向前清除断点 Continue:继续运行
2021
16
调试实例
1.在 gdb 提示符下键入 list 命令三次, 列 出源代码:(注:按回车健将重复上一个命 令)
2021
13
基本gdb命令
▪ file装入想要调试的可执行文件。 ▪ kill终止正在调试的程序。 ▪ list执行一行源代码但不进入函数内部。 ▪ next执行一行源代码但不进入函数内部。 ▪ step执行一行源代码而且进入函数内部。 ▪ run执行当前被调试的程序 ▪ quit终止 gdb ▪ watch使你能监视一个变量的值而不管它何时被改变。 ▪ break在代码里设置断点, 这将使程序执行到这里时被挂起。 ▪ make使你能不退出 gdb 就可以重新产生可执行文件。 ▪ shell使你能不离开 gdb 就执行 UNIX shell 命令。
▪ 监视程序中变量的值。 ▪ 设置断点以使程序在指定的代码行上停止
执行。
▪ 逐行执行代码。 ▪ 分析崩溃程序的产生的core文件
2021
12
gdb基本用法
需要调试的程序,在编译时要使用调试选项。 在默认的情况下,调试符号不会编译到程 序中。调试之后,不需要重新编译程序。 gdb [filename] 出现 (gdb) 在这里,可以输入调试命令
gcc –o main ${OBJS} ${LIBS} Clean:
rm –f main ${OBJS}
2021
24
变量左边不可以有<tab>,例如LIBS的左边 习惯上变量最好大写 运用变量时,以${变量}或$(变量)
2021
25
./configure:建立makefile文件,一般软件开发者写 脚本检查你linux系统相关的软件属性,安装信息 都是在该步骤完成
Make:依据makefile当中的默认工作进行编译的行 为,主要是gcc将源码文件编译成可以被执行的目 标文件,但这些目标文件通常还需要一些函数库 之类的链接后,才能生成一个完整的可执行文件, 该文件会被放置在目前所在的目录中,尚未被安 装到预定安装的目录中
2021
26
Make install:最后步骤,依据makefile中关 于install的选项,将上一个步骤编译完成的 数据安装到默认的目录中,完成安装
如果两个以上的规则,可添加 Clean:
rm –f main main.o haha.o sin_value.o cos_value.o
2021
23
Vi makefile LIBS=-lm OBJS=main.o haha.o sin_value.o
cos_value.o Main:${OBJS}
2.根据列出的源程序, 你能看到要设断点 的地方在第22行, 在 gdb 命令行提示符下键 入如下命令设置断点: (gdb) break 22
3.键入 run 命令, 继续执行
2021
17
4.设置一个观察 string2[size - i] 变量的值的 观察点来看出错误是怎样产生的, 做法是键 入:
2021
14
List 显示程序内容,一般10行 List 函数名:显示函数对应内容 List 行号:显示该行周围的源代码 Set listsize 行数:设置显示代码的行数 Show listsize :显示当前listsize的设置 List first,last:显示first和last之间的内容
gcc与gdb使用
2021
1
2021
2
2021
3
2021
4
2021
8
2021
9
2021
10
多个源文件生成一个可执行文件
问题:有多个源文件时,如何生成一个可执行文件?
▪ 方法1:gcc –Wall –o mytest test1.c test2.c
test3.c
2021
27
make 命令的使用
make [option] [macrodef] [target]
(gdb) display string2[size - i]
5.根据情况使用print命令查看表达式的值, 判断错误出现的位置,进行错误改正
2021
18
程序自动维护工具make
问题:当开发的程序非常庞大,且关系复杂, 手工编译链接非常困难
解决:
利用一个自动系统控制和协调整个程序的创 建过程。在这个自动系统中,程序员可以 定义创建规则并通过这个规则进行项目的 开发。
makefile就是定义这种规则的文件。GNU make 解释执行makefile。
2021
19
程序自动维护工具make
make是一种自动生成和维护目标程序的工具。
▪ 可以调用编译器、连接器等 ▪ 根据程序各部分的修改情况,重新编译链接目
标代码
▪ 输入make命令后,系统自动检测系统文件和以
定义的规则,完成整个创建过程
2021
20
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两次,发现成功实现可执行文件的 产生,并且自动检查文件的更新情况
2021