2012-08-28 75 views
3

我想用dumpObjectInfo函數打印對象信息的轉儲,但沒有打印任何東西。如何使dumpObjectInfo打印調試信息?

存在使用Qt的一個下面的C++程序:

$ cat main1.cpp 
#include <QObject> 
#include <QString> 
#include <QDebug> 
#include "a.h" 

int main() { 
    A a; 
    B b; 
    QObject::connect(&b, SIGNAL(sendText(QString)), &a, SLOT(printText(QString))); 
    b.sendSignal(); 
    qDebug() << "print object dump"; 
    a.dumpObjectInfo(); 
    return 0; 
} 

有一個以下.pro文件(有被設置在CONFIG調試模式):

$ cat qt.pro 
###################################################################### 
# Automatically generated by qmake (2.01a) Tue Aug 28 17:41:22 2012 
###################################################################### 

TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 

# Input 
CONFIG += debug 
HEADERS += a.h 
SOURCES += main1.cpp 

彙編:

$ qmake qt.pro && make clean && make 
rm -f moc_a.cpp 
rm -f main1.o moc_a.o 
rm -f *~ core *.core 
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main1.o main1.cpp 
/usr/bin/moc-qt4 -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. a.h -o moc_a.cpp 
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o moc_a.o moc_a.cpp 
g++ -o qt main1.o moc_a.o -L/usr/lib/i386-linux-gnu -lQtGui -lQtCore -lpthread 
{ test -n "" && DESTDIR="" || DESTDIR=.; } && test $(gdb --version | sed -e 's,[^0-9]\+\([0-9]\)\.\([0-9]\).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index $DESTDIR" -ex quit 'qt' && test -f qt.gdb-index && objcopy --add-section '.gdb_index=qt.gdb-index' --set-section-flags '.gdb_index=readonly' 'qt' 'qt' && rm -f qt.gdb-index || true 

程序運行:

$ ./qt 
Signal text! 

print object dump 
$ 

dumpObjectInfo不打印任何內容,但在.pro文件中設置了調試模式。如何使函數dumpObjectInfo打印對象信息?

回答

3

如果Qt庫本身沒有在調試模式下編譯,這是可以預料的。該doc說:

此功能對於調試非常有用,但什麼都不做,如果庫 已經在釋放模式編譯(即沒有調試 信息)。

爲了做到這一點,您可以從源代碼自編譯Qt,而不是使用預編譯包(或除此之外)。