makefile、gdb使用记录
makefile的模板
all: rover server station rover: rover.c tcputil.o gcc rover.c tcputil.o -o rover -lpthread server: server.c tcputil.o gcc server.c tcputil.o -o server -lpthread station:station.c tcputil.o gcc station.c tcputil.o -o station -lpthread tcputil:tcputil.c gcc tcputil.c -c -lpthread .PHONY: clean clean: rm -f *.o rover server station
- 引号后面的文件代表需要的材料
- .PHONY:指令声明,虚文件
GDB的使用
1、要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:
> gcc -g hello.c -o hello
> g++ -g hello.cpp -o hello
2、启动GDB的方法有以下几种:
a、gdb <program>
program也就是你的执行文件,一般在当然目录下。
b、gdb <program> core
用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
c、gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
3、gdb -help
4、指令表
(gdb) l |
l命令相当于list,从第一行开始例出原码 |
(gdb) | 直接回车表示,重复上一次命令 |
(gdb) break 16 | 设置断点,在源程序第16行处 |
(gdb) break func | 设置断点,在函数func()入口处 |
(gdb) info break | 查看断点信息 |
(gdb) r | 运行程序,run命令简写 |
(gdb) n | 单条语句执行,next命令简写 |
(gdb) c | 继续运行程序,continue命令简写 |
(gdb) p i | 打印变量i的值,print命令简写 |
(gdb) bt | 查看函数堆栈 |
(gdb) finish | 退出函数 |
(gdb) q | 退出gdb |
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
(gdb) p i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
(摘自http://blog.csdn.net/haoel/article/details/2879)
DDD:带图形界面的Debugger
ddd在ubuntu下的安装:sudo apt-get install ddd