c++: trace debug statements automatisieren
c++: trace debug statements automatisieren
Hallo,
Ich muss mir staendig in meine Debugstatements den namen der klasse und methode reinschreiben, was mir aufgrund der menge auf die nerven geht. (trotz cut&paste).
Gibts ne methode welche mir den namen der methode an der aktuellen stelle des calls auszugeben ? Ich weiss das konsortium mag sowas mit recht nicht aber ich wuensche es mir.
Kann ich im Falle eines problemes auch ein backtrace machen ?
Gruss,
Arvid.
Ich muss mir staendig in meine Debugstatements den namen der klasse und methode reinschreiben, was mir aufgrund der menge auf die nerven geht. (trotz cut&paste).
Gibts ne methode welche mir den namen der methode an der aktuellen stelle des calls auszugeben ? Ich weiss das konsortium mag sowas mit recht nicht aber ich wuensche es mir.
Kann ich im Falle eines problemes auch ein backtrace machen ?
Gruss,
Arvid.
Re: c++: trace debug statements automatisieren
Meinst du vielleicht das __FUNCTION__ Macro?lisan hat geschrieben:Gibts ne methode welche mir den namen der methode an der aktuellen stelle des calls auszugeben ?
(GCC hat noch ein __PRETTY_FUNCTION__ Macro, das allerdings nicht ISO C++ ist, aber dafür um einiges lesbarer )
Was genau meinst du? Hast du dir schonmal in der libc info die Funktion backtrace (in execinfo.h) angesehen? Funktioniert auch bei c++Kann ich im Falle eines problemes auch ein backtrace machen ?
Re: c++: trace debug statements automatisieren
Danke, ich verarbeite das erstmal, ob ich damit was anfangen kann.Joghurt hat geschrieben:Meinst du vielleicht das __FUNCTION__ Macro?lisan hat geschrieben:Gibts ne methode welche mir den namen der methode an der aktuellen stelle des calls auszugeben ?
(GCC hat noch ein __PRETTY_FUNCTION__ Macro, das allerdings nicht ISO C++ ist, aber dafür um einiges lesbarer )
Was genau meinst du? Hast du dir schonmal in der libc info die Funktion backtrace (in execinfo.h) angesehen? Funktioniert auch bei c++Kann ich im Falle eines problemes auch ein backtrace machen ?
Mitm bt meinte ich, dass ich im falle eines problemes im code, also eine fehlertollerante reaktion im program ausfuehrlich mit bt darstellen kann.
Ich weiss ja nich immer woher die funktion aufgerufen worden ist.
Gruss
Also unter Java macht log4j bei mir gute Dienste. Wenn log4cxx [1] auch so gut ist, dürfte es deinen Anfrorderungen wohl nahekommen. Hab ich jedoch noch nie benutz (lange nicht mehr c++ gecodet).
cu
[1] http://logging.apache.org/log4cxx/
cu
[1] http://logging.apache.org/log4cxx/
log4cxx
Das mit den backtraces und fun_names geht schonmal ganz ordendlich.
Ich habe nebenbei log4cxx probiert.
Leider ist die dokumentation extrem duenn geraten.
Ausserdem bekomme ich keine funktionsnamen und zeilennummer angaben.
Anstatt der Ausgabe
erhalte ich
idee ?
Ich habe nebenbei log4cxx probiert.
Leider ist die dokumentation extrem duenn geraten.
Ausserdem bekomme ich keine funktionsnamen und zeilennummer angaben.
Anstatt der Ausgabe
Code: Alles auswählen
INFO [main] (test3.cpp:31) - Entering application.
Code: Alles auswählen
INFO [1077146944] (:-1) - Entering application.