Collect minidump and print callstack if an app chrashes.
Review URL: https://codereview.chromium.org/12387018

git-svn-id: http://skia.googlecode.com/svn/trunk@8044 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/render_pdfs_main.cpp b/tools/render_pdfs_main.cpp
index 6c2543b..1ac02d3 100644
--- a/tools/render_pdfs_main.cpp
+++ b/tools/render_pdfs_main.cpp
@@ -16,6 +16,10 @@
 #include "PdfRenderer.h"
 #include "picture_utils.h"
 
+#ifdef SK_USE_CDB
+#include "win_dbghelp.h"
+#endif
+
 /**
  * render_pdfs
  *
@@ -207,9 +211,8 @@
     }
 }
 
-int tool_main(int argc, char** argv);
-int tool_main(int argc, char** argv) {
-
+int tool_main_core(int argc, char** argv);
+int tool_main_core(int argc, char** argv) {
     SkAutoGraphics ag;
     SkTArray<SkString> inputs;
 
@@ -229,6 +232,24 @@
         SkDebugf("Failed to render %i PDFs.\n", failures);
         return 1;
     }
+
+    return 0;
+}
+
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
+#ifdef SK_USE_CDB
+    setUpDebuggingFromArgs(argv[0]);
+    __try {
+#endif
+      return tool_main_core(argc, argv);
+#ifdef SK_USE_CDB
+    }
+    __except(GenerateDumpAndPrintCallstack(GetExceptionInformation()))
+    {
+        return -1;
+    }
+#endif
     return 0;
 }