• 10121阅读
  • 13回复

死活编译不出debug版本程序 [复制链接]

上一主题 下一主题
离线fjb2080
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-20
— 本帖被 XChinux 执行加亮操作(2009-12-01) —
我的系统是ubuntu9.10,安装了qt4,我的pro文件大概是这样的:
CONFIG += qt debug
debug{
    DESTDIR=debug
}
release{
    DESTDIR=realse
}

.......
我运行make的时候,看到有g++ -g .....等的,说明有调试信息在里面,但在生成的程序是,确是在release目录下,死活都生成不了debug版本的程序,用gdb调试生成的程序会提示没有调试符号信息。不知道怎么办了,qcreator 也不行,望高手指点一下。CONFIG += build_all,然后make all也试过,也不行。唉。。。。。
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-20
CONFIG += debug_and_release

CONFIG(debug, debug|release) {
     DESTDIR=debug
} else {
     DESTDIR=realse
}
离线rqzrqh

只看该作者 2楼 发表于: 2009-11-20
CONFIG += debug
离线fjb2080

只看该作者 3楼 发表于: 2009-11-20
就是CONFIG += debug 或是 build_all或是debug_and_release都不行,不知道是哪里的问题,不知道和qt有什么关系没
就只想生成个debug程序调试而已,这都有问题
离线dbzhang800

只看该作者 4楼 发表于: 2009-11-20
我想知道 你到底是不清楚 如何生成 debug 的程序?       (make debug)
还是不清楚 debug的程序为什么没放到你期待的目录?
离线lee51525125
只看该作者 5楼 发表于: 2009-11-20
你编qt是编了debug版的库吗?或你下的qt是否包含debug和release库?
离线fjb2080

只看该作者 6楼 发表于: 2009-11-20
1。我是在ubuntu下直接安装的qt4
2。我想编译出debug版本的程序,所以在pro文件里设置了CONFIG +=debug
3。我想编译出的程序包含debug信息,这样我就可以调试,但是就是编译出来的程序不是debug版的,而是release版的,没有包含调试信息,所以调试不了
4。不知道qt 的debug和release库对生成的程序是debug的还是release有关系吗?qt不是调用gcc来编译的吗,我不需要调试进qt库里,我只需要调试自己的代码。

我的编译信息是这样的

.........
g++ -c -pipe -g -D_REENTRANT -Wall -W  .....................
.......

g++  -o release/qimage objs/browseforfiledialog.o objs/cdrom.o
........

最后的生成的是release的程序,没有调试信息,所以用gdb调试不了
离线fjb2080

只看该作者 7楼 发表于: 2009-11-20
我看我的编译里有g++ -g 选项了,但链接生成可执行程序的时候,为什么生成的程序就是没有调试信息呢,是release版而不是debug版的呢
离线fjb2080

只看该作者 8楼 发表于: 2009-11-20
谢谢大家的回答,我想我的问题已经解决了,不过我不知道什么原因。

我在ubuntu下再次sudo aptitude install kdevelop,安装了一些库

再次编译,这是的程序还是生成在release目录下,不过用gdb打开已经有调试信息了

所以我就有两点不明白
1。为什么安装kdevelop后就可以生成debug版的可执行程序?
2。为什么不是生成在debug目录下,而是生成在了release目录下呢,因为我是这样这样设置的阿
CONFIG += qt debug
debug{
    DESTDIR=debug
}
release{
    DESTDIR=realse
}
离线fjb2080

只看该作者 9楼 发表于: 2009-11-20
CONFIG += qt debug
debug{
    DESTDIR=debug
}
release{
    DESTDIR=release
}
离线steinlee

只看该作者 10楼 发表于: 2009-11-21
Check if your makefile has -O2 or O3 which is for optimization.
If -O2 or -O3 is added, no debug info is included in the build.

引用楼主fjb2080于2009-11-20 11:34发表的 死活编译不出debug版本程序 :
我的系统是ubuntu9.10,安装了qt4,我的pro文件大概是这样的:
CONFIG += qt debug
debug{
    DESTDIR=debug
}
.......
Looking for remote C/C++ and Qt 兼职
离线fjb2080

只看该作者 11楼 发表于: 2009-11-30
又编译不出debug的程序了,唉

Makefile里没有-O2 or -O3选项。

这是Makefile的选项,可以看到有-g

CFLAGS        = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)
CXXFLAGS      = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)

真是不明白是哪里的问题
离线fjb2080

只看该作者 12楼 发表于: 2009-11-30
很奇怪!
我用svn管理我的源代码,为了不“污染”我的源代码目录,我在另外建立了一个目录,里面是一些文件链接,它们都链接到我们的源代码文件中,并且另外建立一个工程(.pro文件)以便可以加入调试信息,然后在生成Makefile,并在这个目录下编译生成可执行文件。但这个生成的可执行程序并不包含可调试信息。
另一个现象是,我另外建立了一个目录,将源代码文件都拷贝过来,然后在编译生成可执行程序(编译包含debug),这个编译出来的程序就包含了debug 的信息,可以debug调试,这很奇怪,难道是文件的符号链接的问题?
离线fjb2080

只看该作者 13楼 发表于: 2009-12-01
问题解决了,原因就是在unix:LIBS += -s的缘故
在发行版上 unix:LIBS += -s ,增加-s 就不会生成调试信息表。
没找到这个-s 的意思,望知道的朋友告诉一声。
快速回复
限100 字节
 
上一个 下一个