mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-06 13:07:48 +00:00
Merge pull request #2053 from reactormonk/message-for-koch-temp
report how to create a compiler stacktrace #1280
This commit is contained in:
@@ -720,7 +720,10 @@ type
|
||||
proc handleError(msg: TMsgKind, eh: TErrorHandling, s: string) =
|
||||
template quit =
|
||||
if defined(debug) or gVerbosity >= 3 or msg == errInternal:
|
||||
writeStackTrace()
|
||||
if stackTraceAvailable():
|
||||
writeStackTrace()
|
||||
else:
|
||||
msgWriteln("No stack traceback available\nTo create a stacktrace, rerun compilation with ./koch temp c <file>")
|
||||
quit 1
|
||||
|
||||
if msg >= fatalMin and msg <= fatalMax:
|
||||
|
||||
@@ -175,6 +175,8 @@ proc auxWriteStackTrace(f: PFrame, s: var string) =
|
||||
add(s, tempFrames[j].procname)
|
||||
add(s, "\n")
|
||||
|
||||
proc stackTraceAvailable*(): bool
|
||||
|
||||
when hasSomeStackTrace:
|
||||
proc rawWriteStackTrace(s: var string) =
|
||||
when NimStackTrace:
|
||||
@@ -188,6 +190,18 @@ when hasSomeStackTrace:
|
||||
auxWriteStackTraceWithBacktrace(s)
|
||||
else:
|
||||
add(s, "No stack traceback available\n")
|
||||
proc stackTraceAvailable(): bool =
|
||||
when NimStackTrace:
|
||||
if framePtr == nil:
|
||||
result = false
|
||||
else:
|
||||
result = true
|
||||
elif defined(nativeStackTrace) and nativeStackTraceSupported:
|
||||
result = true
|
||||
else:
|
||||
result = false
|
||||
else:
|
||||
proc stackTraceAvailable*(): bool = result = false
|
||||
|
||||
proc quitOrDebug() {.inline.} =
|
||||
when not defined(endb):
|
||||
|
||||
Reference in New Issue
Block a user