X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=common.cc;h=f4aa7ecefa023417c7eec4680e38e1c25a5cc13b;hb=90ef0247c8d0cb26b78e66e553ec8097fd1b9f0d;hp=e05e094ea0105a9c2ce8e221cf95a1613d21074b;hpb=9cadc8ddfd0b4597daab0bceb6a80cdac4cfffb4;p=model-checker.git diff --git a/common.cc b/common.cc index e05e094..f4aa7ec 100644 --- a/common.cc +++ b/common.cc @@ -2,14 +2,21 @@ #include #include +#include + #include "common.h" #include "model.h" +#include "stacktrace.h" #define MAX_TRACE_LEN 100 +#define CONFIG_STACKTRACE /** Print a backtrace of the current program state. */ void print_trace(void) { +#ifdef CONFIG_STACKTRACE + print_stacktrace(stdout); +#else void *array[MAX_TRACE_LEN]; char **strings; int size, i; @@ -23,6 +30,7 @@ void print_trace(void) printf("\t%s\n", strings[i]); free(strings); +#endif /* CONFIG_STACKTRACE */ } void model_print_summary(void) @@ -34,3 +42,13 @@ void assert_hook(void) { printf("Add breakpoint to line %u in file %s.\n",__LINE__,__FILE__); } + +void model_assert(bool expr, const char *file, int line) +{ + if (!expr) { + printf(" [BUG] Program has hit assertion in file %s at line %d\n", + file, line); + model->set_assert(); + model->switch_to_master(NULL); + } +}