Portál AbcLinuxu, 10. května 2025 05:31

Dotaz: qDebug() pridani nazvu tridy a funkce

8.7.2013 16:34 pou | skóre: 18
qDebug() pridani nazvu tridy a funkce
Přečteno: 280×
Odpovědět | Admin
Ahoj,
mám dvě otázky:
1) mužu volat qDebug z více vláken a přitom sypat výstup do souboru?? - qInstallMsgHandler(myLogger);
2) chtěl bych modifikovat qDebug() výstup, tak aby mi vypisoval automaticky název třídy a funkce, ze které byl qDebug() volán. Příklad volání: qDebug << "Zprava";
Děkuji za odpověď
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.7.2013 12:39 pou | skóre: 18
Rozbalit Rozbalit vše Re: qDebug() pridani nazvu tridy a funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odpověď na 2:
#define DEBUG qDebug() << __PRETTY_FUNCTION__ << "\t"
#define WARNING qWarning() << __PRETTY_FUNCTION__ << "\t"
#define CRITICAL qCritical() << __PRETTY_FUNCTION__ << "\t"
přidání datumu například pomocí qInstallMsgHandler, kde se vytvoří vlastní funkce.....

11.7.2013 15:23 Ivan
Rozbalit Rozbalit vše Re: qDebug() pridani nazvu tridy a funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podivej se sem, kdysi jsem to taky resil. Makro __HERE__, popr. __QHERE__.

Ten ts_log umi logovat z vlaken a dokonce umi do vystupu pridat cislo vlakna. Popr. i jmeno vlakna (na Linuxu i na Woknach se daji vlakna oznacit jmenem).
skunkOS avatar 11.7.2013 19:44 skunkOS | skóre: 27 | blog: Tak nějak
Rozbalit Rozbalit vše Re: qDebug() pridani nazvu tridy a funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Koukal jste vůbec do dokumentace pro Qt5?

http://qt-project.org/doc/qt-5.0/qtcore/qtglobal.html#qInstallMessageHandler

Pokud chcete navíc zajistit, aby bylo volání thread-safe, tak použijte semafor (QSemaphore).
http://martinrotter.github.io
15.7.2013 08:30 pou | skóre: 18
Rozbalit Rozbalit vše Re: qDebug() pridani nazvu tridy a funkce
Dokumentaci jsem si četl,
ale protože používám Q4.8 kde QinstallMessageHandler není ani tam není qSetMessagePattern, tak myslím, že pomocí těch maker je to dobrý nápad.
V dokumentaci jsem právě nic nenašel o tom jestli je qDebug() ThreadSave, takže tímto děkuji za odpověd - využiji Mutex.
Honza

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.