Ich mache einige C++ - Programmierung unter Mac OS X Lion und möchte Stack-Trace bei Absturz oder Ausnahme ausdrucken. In der folgenden Diskussion habe ich sowohl MacPorts gcc47 als auch apples llvm-gcc42 ausprobiert.Backtracing bei nicht abgefangener Ausnahme unter Mac OSX
Ich kam, um glog zu verwenden, weil es hübsche Stapelspur druckt. Es sieht gut die Drucke die folgende Stack-Trace, wenn ich das Programm zum Absturz, durch einen Null-Zeiger zugreifen:
*** Aborted at 1333289352 (unix time) try "date -d @1333289352" if you are using GNU date ***
PC: @ 0x1091a9137 C::h()
*** SIGSEGV (@0x0) received by PID 29623 (TID 0x7fff722d4960) stack trace: ***
@ 0x7fff8cabdcfa _sigtramp
@ 0x1091a9138 C::h()
@ 0x1091a9112 C::g()
@ 0x1091a90ef C::f()
@ 0x1091a903a main
Segmentation fault: 11
Allerdings, wenn ich das Programm abgestürzt durch Auslösen einer Ausnahme, die Stack-Trace ausgedruckt ist nicht sehr nützlich:
terminate called after throwing an instance of 'std::runtime_error'
what(): Haha
*** Aborted at 1333289406 (unix time) try "date -d @1333289406" if you are using GNU date ***
PC: @ 0x7fff8450f82a __kill
*** SIGABRT (@0x7fff8450f82a) received by PID 52106 (TID 0x7fff722d4960) stack trace: ***
@ 0x7fff8cabdcfa _sigtramp
Abort trap: 6
versuchte ich das Samething auf einem System CentOS und druckt es mit abgefangene Ausnahmen vernünftigen Stack-Trace aus, so sollte es kein Problem des glog sein.
Also meine Frage ist: gibt es eine Möglichkeit, Glog drucken den Stack-Trace für nicht abgefangene Ausnahmen drucken lassen?
Dies ist keine Antwort auf Glog arbeiten, aber Sie könnten DTrace, die auch geben können, was Sie wollen. Es besteht keine Notwendigkeit, etwas in ein Programm zu kompilieren oder für das Debug zu kompilieren. Es kann für bestehende Programme verwendet werden. einige Referenzen: [Oracle/Sun DTrace] (http://docs.oracle.com/cd/E19253-01/817-6223/chp-actsub-ustack/index.html) und [MacTech DTrace] (http: // www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html) es gibt mehrere Seiten von "DTrace one Liner" im Web, die Sie wollen können Sie wollen (mit Ustack). Es ist sehr nützlich. – gbulmer
Der Vollständigkeit halber hat das OP dies offenbar als Fehler bei google-glog [hier] (http://code.google.com/p/google-glog/issues/detail?id=120) abgelegt. Hoffentlich wird jemand von Google die Frage direkt ansprechen. – MrGomez
@MrGomez, ich war es, der auf das Google-Glog-Problem eingefügt hat. –