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

posted @ 2014-07-23 18:51  catmelo  阅读(474)  评论(0编辑  收藏  举报