]> granicus.if.org Git - clang/commitdiff
libclang: Print more information when recovering from crashes in
authorDaniel Dunbar <daniel@zuster.org>
Mon, 23 Aug 2010 22:35:34 +0000 (22:35 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 23 Aug 2010 22:35:34 +0000 (22:35 +0000)
clang_parseTranslationUnit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111855 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/CIndex.cpp

index 27d5ab25b820ea8df8e006f596616173d46b68e9..a98f064e6f90baca1ed8e41a97c6932ac66252fe 100644 (file)
@@ -1491,7 +1491,26 @@ CXTranslationUnit clang_parseTranslationUnit(CXIndex CIdx,
   llvm::CrashRecoveryContext CRC;
 
   if (!CRC.RunSafely(clang_parseTranslationUnit_Impl, &PTUI)) {
-    fprintf(stderr, "libclang: crash detected during parsing");
+    fprintf(stderr, "libclang: crash detected during parsing: {\n");
+    fprintf(stderr, "  'source_filename' : '%s'\n", source_filename);
+    fprintf(stderr, "  'command_line_args' : [");
+    for (int i = 0; i != num_command_line_args; ++i) {
+      if (i)
+        fprintf(stderr, ", ");
+      fprintf(stderr, "'%s'", command_line_args[i]);
+    }
+    fprintf(stderr, "],\n");
+    fprintf(stderr, "  'unsaved_files' : [");
+    for (unsigned i = 0; i != num_unsaved_files; ++i) {
+      if (i)
+        fprintf(stderr, ", ");
+      fprintf(stderr, "('%s', '...', %ld)", unsaved_files[i].Filename,
+              unsaved_files[i].Length);
+    }
+    fprintf(stderr, "],\n");
+    fprintf(stderr, "  'options' : %d,\n", options);
+    fprintf(stderr, "}\n");
+    
     return 0;
   }