cmake: Print C++ stack trace after INTERNAL_ERROR messages

Since an INTERNAL_ERROR is always a bug, it will be useful to have the
program stack trace available in the report.
This commit is contained in:
Brad King 2014-04-17 11:20:13 -04:00
parent 5265a5dc2a
commit 3de4c29565
1 changed files with 17 additions and 0 deletions

View File

@ -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)
{