summaryrefslogtreecommitdiffstats
path: root/examples/example-winmain
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-winmain
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-winmain')
-rw-r--r--examples/example-winmain/main.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/examples/example-winmain/main.cpp b/examples/example-winmain/main.cpp
new file mode 100644
index 000000000..8094e7fc4
--- /dev/null
+++ b/examples/example-winmain/main.cpp
@@ -0,0 +1,28 @@
+#include "../stacktrace-windows/common.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+
+extern int exampleMain(int argc, char** argv);
+extern const char* const g_logFileName;
+
+int WinMain(
+ HINSTANCE /* instance */,
+ HINSTANCE /* prevInstance */,
+ LPSTR /* commandLine */,
+ int /*showCommand*/)
+
+{
+ FILE* logFile = fopen(g_logFileName, "w");
+ __try
+ {
+ int argc = 0;
+ char** argv = nullptr;
+ return exampleMain(argc, argv);
+ }
+ __except (exceptionFilter(logFile, GetExceptionInformation()))
+ {
+ ::exit(1);
+ }
+}