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:
parent
5265a5dc2a
commit
3de4c29565
|
@ -24,6 +24,7 @@
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
# include "cmGraphVizWriter.h"
|
# include "cmGraphVizWriter.h"
|
||||||
# include "cmVariableWatch.h"
|
# include "cmVariableWatch.h"
|
||||||
|
# include <cmsys/SystemInformation.hxx>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cmsys/Glob.hxx>
|
#include <cmsys/Glob.hxx>
|
||||||
|
@ -2601,6 +2602,22 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
|
||||||
// Add a terminating blank line.
|
// Add a terminating blank line.
|
||||||
msg << "\n";
|
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.
|
// Output the message.
|
||||||
if(isError)
|
if(isError)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue