Adds backward to REPL for better error logging.
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Deukhoofd 2021-01-04 13:33:52 +01:00
parent 9fcf296442
commit dbef09f4bb
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
4 changed files with 4259 additions and 2 deletions

View File

@ -40,9 +40,10 @@ endif ()
if (REPL)
# Create Test executable
file(GLOB_RECURSE REPL_FILES "repl/*.cpp" "repl/*.hpp")
file(GLOB_RECURSE REPL_FILES "repl/*.cpp" "repl/*.hpp" "extern/backward.cpp")
add_executable(MalachScriptREPL ${REPL_FILES})
target_link_libraries(MalachScriptREPL PUBLIC MalachScript cursesw)
target_compile_definitions(MalachScriptREPL PRIVATE BACKWARD_HAS_DW)
target_link_libraries(MalachScriptREPL PUBLIC MalachScript cursesw -ldw)
endif ()

42
extern/backward.cpp vendored Normal file
View File

@ -0,0 +1,42 @@
// Pick your poison.
//
// On GNU/Linux, you have few choices to get the most out of your stack trace.
//
// By default you get:
// - object filename
// - function name
//
// In order to add:
// - source filename
// - line and column numbers
// - source code snippet (assuming the file is accessible)
// Install one of the following libraries then uncomment one of the macro (or
// better, add the detection of the lib and the macro definition in your build
// system)
// - apt-get install libdw-dev ...
// - g++/clang++ -ldw ...
#define BACKWARD_HAS_DW 1
// - apt-get install binutils-dev ...
// - g++/clang++ -lbfd ...
// #define BACKWARD_HAS_BFD 1
// - apt-get install libdwarf-dev ...
// - g++/clang++ -ldwarf ...
// #define BACKWARD_HAS_DWARF 1
// Regardless of the library you choose to read the debug information,
// for potentially more detailed stack traces you can use libunwind
// - apt-get install libunwind-dev
// - g++/clang++ -lunwind
// #define BACKWARD_HAS_LIBUNWIND 1
#include "backward.hpp"
namespace backward {
backward::SignalHandling sh;
} // namespace backward

4213
extern/backward.hpp vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -90,6 +90,7 @@ void ParseAndUpdate(const std::vector<std::u8string> lines, WINDOW* diagnosticsW
wrefresh(parsedWindow);
UpdateScriptWithParseInfo(inputWindow, script, diag, firstToken);
delete parsedResult;
}
int main([[maybe_unused]] int argc, [[maybe_unused]] const char* argv[]) {