 //================
 // CUDA functions
 //================
+void stack_backtrace()
+{
+    void *array[10];
+    char **strings;
+    int size = backtrace(array, 10);
+    strings = backtrace_symbols(array, size);
+    printf ("Stack backtrace:\n");
+    for (size_t i = 0; i < size; i++) printf ("%s\n", strings[i]);
+    raise(SIGQUIT);
+}
 
 #ifdef NDEBUG
 #define CALL_CUDA(func__, args__)                                                                                  \

// This file must be compiled with nvcc
#include <unistd.h>
#include <signal.h>
#include <stdio.h>

        gethostname(nm, 1024);                                                                                     \
        printf("hostname: %s\n", nm);                                                                              \
        printf("Error in %s at line %i of file %s: %s\n", #func__, __LINE__, __FILE__, cudaGetErrorString(error)); \
        stack_backtrace();                                                                                         \
    }                                                                                                              \
}
#else
