Linux笔记--4 -- GDB和makefile
来源:互联网 发布:淘宝拍摄摄影软件 编辑:程序博客网 时间:2024/05/29 13:01
2014-06-14
GDB是GNU发布的一款功能强大的程序调试工具。GBD主要完成下面三个方面的功能:
1,启动被调试程序。
2,让被调试的程序在指定的位置停住。
3,当程序被停住时,可以检查程序状态(如变量值)。
1,编译生成可执行文件
gcc -g test.c -o test
2,启动GDB
gbd test
或者
gdb
file test
3,在 XXX 函数处设置断点
break main (或者 b main)
4,运行程序
run (或者 r)
5,单步运行
next (n)
6,继续运行
continue (c)
7,退出GDB
quit (q)
* list (l) 查看程序
* break (b) 函数名 在某函数入口处添加断点
* break (b) 行号 在指定行添加断点
* break (b) 文件名:行号 在指定文件的指定行添加断点
* break (b) 行号 if 条件 当条件为真时,指定行号处断点生效,例 b 5 if i=10
当 i 等于 10 时第5行断点生效
* info break 查看所有设置的断点
* delete (d) 断点编号 删除断点
* run (r) 开始运行程序
* next (n) 单步运行程序(不进入子函数)
* step (s) 单步运行程序(进入子函数)
* continue (c) 继续运行程序
* print (p) 变量名 查看指定变量值
* finish 运行程序,直到当期函数结束
* watch 变量名 对指定变量进行监控
* quit (q) 退出 gdb
==================================================================
Makefile (术语)
规则:用于说明如何生成一个或多个目标文件,规则格式如下:
targets:prerequisites
command
目标 依赖 命令 (命令前是 tab 键)
例: main.o:main.c
gcc -c main.c
在makefile中,规则的顺序是很重要的,因为,makefile中只应该有一个最终目标,
其他的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。
一般来说,定义在makefile中的目标可能会有很多,但是第一条规则中的目标将被确立
为最终的目标。
make命令默认在当前目录下寻找名字为 makefile/Makefile的工程文件,当名字不为
这两者之一时,可以使用如下方法指定:
make -f 文件名
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)
例: .PHONY:clean
clean:
rm -f hello main.o
".PHONY"将"clean"目标声明为伪目标
====== 变量 =========
obj=main.o func1.o func2.0
hello:$(obj)
gcc $(obj) -o hello
obj为变量
在makefile中,存在系统默认的自动化变量
* $^ : 代表所有的依赖文件
* $@ : 代表目标
* $< : 代表第一个依赖文件
例: hello:main.o func1.o func2.o
gcc main.o fun1.o func2.o -o hello
===>>
hello:main.o func1.o func2.o
gcc $^ -0 $@
makefile中"#"字符后的内容被视作注释。
@ :取消回显
例: hello:hello.c
@gcc hello.c -o hello
GDB是GNU发布的一款功能强大的程序调试工具。GBD主要完成下面三个方面的功能:
1,启动被调试程序。
2,让被调试的程序在指定的位置停住。
3,当程序被停住时,可以检查程序状态(如变量值)。
1,编译生成可执行文件
gcc -g test.c -o test
2,启动GDB
gbd test
或者
gdb
file test
3,在 XXX 函数处设置断点
break main (或者 b main)
4,运行程序
run (或者 r)
5,单步运行
next (n)
6,继续运行
continue (c)
7,退出GDB
quit (q)
* list (l) 查看程序
* break (b) 函数名 在某函数入口处添加断点
* break (b) 行号 在指定行添加断点
* break (b) 文件名:行号 在指定文件的指定行添加断点
* break (b) 行号 if 条件 当条件为真时,指定行号处断点生效,例 b 5 if i=10
当 i 等于 10 时第5行断点生效
* info break 查看所有设置的断点
* delete (d) 断点编号 删除断点
* run (r) 开始运行程序
* next (n) 单步运行程序(不进入子函数)
* step (s) 单步运行程序(进入子函数)
* continue (c) 继续运行程序
* print (p) 变量名 查看指定变量值
* finish 运行程序,直到当期函数结束
* watch 变量名 对指定变量进行监控
* quit (q) 退出 gdb
==================================================================
Makefile (术语)
规则:用于说明如何生成一个或多个目标文件,规则格式如下:
targets:prerequisites
command
目标 依赖 命令 (命令前是 tab 键)
例: main.o:main.c
gcc -c main.c
在makefile中,规则的顺序是很重要的,因为,makefile中只应该有一个最终目标,
其他的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。
一般来说,定义在makefile中的目标可能会有很多,但是第一条规则中的目标将被确立
为最终的目标。
make命令默认在当前目录下寻找名字为 makefile/Makefile的工程文件,当名字不为
这两者之一时,可以使用如下方法指定:
make -f 文件名
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)
例: .PHONY:clean
clean:
rm -f hello main.o
".PHONY"将"clean"目标声明为伪目标
====== 变量 =========
obj=main.o func1.o func2.0
hello:$(obj)
gcc $(obj) -o hello
obj为变量
在makefile中,存在系统默认的自动化变量
* $^ : 代表所有的依赖文件
* $@ : 代表目标
* $< : 代表第一个依赖文件
例: hello:main.o func1.o func2.o
gcc main.o fun1.o func2.o -o hello
===>>
hello:main.o func1.o func2.o
gcc $^ -0 $@
makefile中"#"字符后的内容被视作注释。
@ :取消回显
例: hello:hello.c
@gcc hello.c -o hello
0 0
- Linux笔记--4 -- GDB和makefile
- linux GCC、GDB、Makefile
- linux GCC、GDB、Makefile
- 初识GDB和makefile
- gdb和makefile初步
- Makefile和gdb调试
- gdb和makefile
- Linux 开发工具学习(gcc 、gdb和makefile)
- GDB快速进阶笔记 | Makefile
- gcc、makefile、gdb学习笔记
- linux下gcc、gdb、makefile
- linux-基础-gcc/gdb/makefile
- 调试器GDB和Makefile
- Linux学习之GCC&GDB,Makefile
- Linux程序设计基础(gcc、makefile、gdb)
- Linux 开发工具 ---gcc makefile gdb
- GDB调试,makefile使用,linux相关
- Linux环境搭建(vim,makefile,gdb...)
- Linux shell复习
- ARM架构与内核版本
- c编译整理
- 了解TCP
- poj2243 && hdu1372 Knight Moves(BFS)
- Linux笔记--4 -- GDB和makefile
- matlab学习笔记 struct函数
- glCullFace函数
- hadoop环境配置过程中可能遇到问题的解决方案
- 微信公众平台开发者原理图解
- Python3关与迭代器next()使用为__next__()的一点注意事项
- POJ 1922 Ride to School
- mysql导出sql插入报错
- 大四了!家庭压力,想找个男朋友!!