QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1792|回复: 7

在makefile里如何编写debug版程序?

[复制链接]
发表于 2003-12-5 20:19:51 | 显示全部楼层 |阅读模式
我写了一个读写文件模块的makefile,但不知道如何编译出debug版的程序,就是能生成core用gdb调试。下面是我的makefile文件,望高人指点:
[code:1]
#Makefile for hdfile

PDT = test
CPP = g++
CFLAG = -g
INCLUDE = hdfile.h hditem.h hdnode.h hdnodelist.h hdroot.h hdsection.h hdexport.h
OBJ = hdfile.o hditem.o hdnode.o hdnodelist.o hdroot.o hdsection.o main.o

$(PDT):$(OBJ)
        $(CPP) -o $(PDT) $(CFLAG) $(OBJ)
hdfile.o: hdfile.cpp $(INCLUDE)
        $(CPP) -c $<
hditem.o: hditem.cpp $(INCLUDE)
        $(CPP) -c $<
hdnode.o: hdnode.cpp $(INCLUDE)
        $(CPP) -c $<
hdnodelist.o: hdnodelist.cpp $(INCLUDE)
        $(CPP) -c $<
hdroot.o: hdroot.cpp $(INCLUDE)
        $(CPP) -c $<
hdsection.o: hdsection.cpp $(INCLUDE)
        $(CPP) -c $<
main.o: main.cpp $(INCLUDE)
        $(CPP) -c $<
[/code:1]
发表于 2003-12-5 22:04:10 | 显示全部楼层
CFLAG = -g
[code:1]
hdfile.o: hdfile.cpp $(INCLUDE)
   $(CPP) -c $<
[/code:1]

should be

[code:1]
hdfile.o: hdfile.cpp $(INCLUDE)
   $(CPP) $(CFLAGS)-c $<
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2003-12-6 17:23:14 | 显示全部楼层
[quote:9bf638561d="980501427"]CFLAG = -g
[code:1]
hdfile.o: hdfile.cpp $(INCLUDE)
   $(CPP) -c $<
[/code:1]

should be

[code:1]
hdfile.o: hdfile.cpp $(INCLUDE)
   $(CPP) $(CFLAGS)-c $<
[/code:1][/quote]

这样编译出来的hdfile.o就有core文件了吗?
回复

使用道具 举报

发表于 2003-12-6 19:16:30 | 显示全部楼层
所有的$(OBJ)都要加符号和调试信息.
回复

使用道具 举报

 楼主| 发表于 2003-12-8 09:25:35 | 显示全部楼层
我的修改如下:
[code:1]
#!/bin/sh
#Makefile for hdfile
#

PDT = test
CPP = g++
CFLAG = -g
INCLUDE = hdfile.h hditem.h hdnode.h hdnodelist.h hdroot.h hdsection.h hdexport.h
OBJ = hdfile.o hditem.o hdnode.o hdnodelist.o hdroot.o hdsection.o main.o


$(PDT):$(OBJ)
        $(CPP) -o $(PDT) $(CFLAG) $(OBJ)
hdfile.o: hdfile.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
hditem.o: hditem.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
hdnode.o: hdnode.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
hdnodelist.o: hdnodelist.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
hdroot.o: hdroot.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
hdsection.o: hdsection.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
main.o: main.cpp $(INCLUDE)
        $(CPP) $(CFLAG) -c $<
[/code:1]
但为何还是在当前目录下找不到core文件呢?
回复

使用道具 举报

发表于 2003-12-8 09:30:55 | 显示全部楼层
是不是core dump好像不是编译的时候决定的吧? 但是何必非要这个core呢 加上了调试信息足可以调试了
回复

使用道具 举报

 楼主| 发表于 2003-12-9 08:55:26 | 显示全部楼层
是么,原来都是用kdevelop调试,没直接用过gdb,
按照书上说的,调试开始的命令如下:
$gdb test core
但是没有core是不行的呀。
谁对gdb调试有经验,请指教一二!
回复

使用道具 举报

发表于 2003-12-9 09:14:03 | 显示全部楼层
直接调试.o也可以的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 06:06 , Processed in 0.071949 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表