summaryrefslogtreecommitdiffstats
path: root/examples/example-main/main.cpp
diff options
context:
space:
mode:
authorAnders Leino <aleino@nvidia.com>2025-01-08 08:30:18 +0200
committerGitHub <noreply@github.com>2025-01-07 22:30:18 -0800
commit5b9931456f595b0a2163fabb65dceac99e0e220f (patch)
tree1329b9bdb3fd77349e6a03dc4d2d1c34251f219b /examples/example-main/main.cpp
parentc43f6fa55aca23365c86c6ec1737d42be74d9d3e (diff)
Add backtraces to examples (#5973)
* examples: Log stack trace on exceptions For now, this is only implemented on Windows. This helps to address #5520. * examples: Print log file if there is any * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'examples/example-main/main.cpp')
-rw-r--r--examples/example-main/main.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/example-main/main.cpp b/examples/example-main/main.cpp
new file mode 100644
index 000000000..46ffc7278
--- /dev/null
+++ b/examples/example-main/main.cpp
@@ -0,0 +1,32 @@
+#include "../stacktrace-windows/common.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+extern int exampleMain(int argc, char** argv);
+
+#if defined(_WIN32)
+
+#include <windows.h>
+
+int main(int argc, char** argv)
+{
+ __try
+ {
+ return exampleMain(argc, argv);
+ }
+ __except (exceptionFilter(stdout, GetExceptionInformation()))
+ {
+ ::exit(1);
+ }
+}
+
+#else // defined(_WIN32)
+
+int main(int argc, char** argv)
+{
+ // TODO: Catch exception and print stack trace also on non-Windows platforms.
+ return exampleMain(argc, argv);
+}
+
+#endif