Rev 11 | Rev 18 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 11 | Rev 14 | ||
|---|---|---|---|
| Line 42... | Line 42... | ||
| 42 | fprintf(stderr, "%d: ", stack_nbr++); |
42 | fprintf(stderr, "%d: ", stack_nbr++); |
| 43 | return system(addr2line_cmd); |
43 | return system(addr2line_cmd); |
| 44 | } |
44 | } |
| 45 | 45 | ||
| 46 | static void print_stacktrace(CONTEXT* context) { |
46 | static void print_stacktrace(CONTEXT* context) { |
| 47 | |
47 | #if 0 // Pierre-Marie Baty -- looks like this doesn't build right away on Windows |
| 48 | SymInitialize(GetCurrentProcess(), 0, true); |
48 | SymInitialize(GetCurrentProcess(), 0, true); |
| 49 | 49 | ||
| 50 | STACKFRAME frame = { 0 }; |
50 | STACKFRAME frame = { 0 }; |
| 51 | 51 | ||
| 52 | /* setup initial stack frame */ |
52 | /* setup initial stack frame */ |
| Line 68... | Line 68... | ||
| 68 | 0)) { |
68 | 0)) { |
| 69 | addr2line(windows_program_name, (void*)frame.AddrPC.Offset); |
69 | addr2line(windows_program_name, (void*)frame.AddrPC.Offset); |
| 70 | } |
70 | } |
| 71 | 71 | ||
| 72 | SymCleanup(GetCurrentProcess()); |
72 | SymCleanup(GetCurrentProcess()); |
| 73 | #endif // |
73 | #endif // 0 |
| 74 | } |
74 | } |
| 75 | 75 | ||
| 76 | static LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS* ExceptionInfo) { |
76 | static LONG WINAPI windows_exception_handler(EXCEPTION_POINTERS* ExceptionInfo) { |
| 77 | switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { |
77 | switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { |
| 78 | case EXCEPTION_ACCESS_VIOLATION: |
78 | case EXCEPTION_ACCESS_VIOLATION: |