Browse Source

Merge topic 'internal-error-backtrace'

3de4c295 cmake: Print C++ stack trace after INTERNAL_ERROR messages
Brad King 11 years ago
parent
commit
bb891c2ef1
1 changed files with 17 additions and 0 deletions
  1. 17 0
      Source/cmake.cxx

+ 17 - 0
Source/cmake.cxx

@@ -24,6 +24,7 @@
 #if defined(CMAKE_BUILD_WITH_CMAKE)
 # include "cmGraphVizWriter.h"
 # include "cmVariableWatch.h"
+# include <cmsys/SystemInformation.hxx>
 #endif
 
 #include <cmsys/Glob.hxx>
@@ -2601,6 +2602,22 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
   // Add a terminating blank line.
   msg << "\n";
 
+#if defined(CMAKE_BUILD_WITH_CMAKE)
+  // Add a C++ stack trace to internal errors.
+  if(t == cmake::INTERNAL_ERROR)
+    {
+    std::string stack = cmsys::SystemInformation::GetProgramStack(0,0);
+    if(!stack.empty())
+      {
+      if(cmHasLiteralPrefix(stack, "WARNING:"))
+        {
+        stack = "Note:" + stack.substr(8);
+        }
+      msg << stack << "\n";
+      }
+    }
+#endif
+
   // Output the message.
   if(isError)
     {