]> git.cworth.org Git - apitrace/blobdiff - common/trace_dump.cpp
cli: use $LIB to handle multilib automagically on glibc
[apitrace] / common / trace_dump.cpp
index e6810b6afa63e209e156b096bb8a5197b2dc32ce..8732d1e56aeeb580a046f0b64b99d7ac8bb0de15 100644 (file)
@@ -178,7 +178,7 @@ public:
 
             if (!memberName || !*memberName) {
                 // Anonymous structure
-                Struct *memberStruct = dynamic_cast<Struct *>(memberValue);
+                Struct *memberStruct = memberValue->toStruct();
                 assert(memberStruct);
                 if (memberStruct) {
                     sep = visitMembers(memberStruct, sep);
@@ -228,6 +228,17 @@ public:
         _visit(r->humanValue);
     }
 
+    void visit(StackFrame *frame) {
+        frame->dump(os);
+    }
+
+    void visit(Backtrace & backtrace) {
+        for (int i = 0; i < backtrace.size(); i ++) {
+            visit(backtrace[i]);
+            os << "\n";
+        }
+    }
+
     void visit(Call *call) {
         CallFlags callFlags = call->flags;
         
@@ -271,6 +282,10 @@ public:
         
         os << "\n";
 
+        if (call->backtrace != NULL) {
+            os << bold << red << "Backtrace:\n" << normal;
+            visit(*call->backtrace);
+        }
         if (callFlags & CALL_FLAG_END_FRAME) {
             os << "\n";
         }