mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
report how to create a compiler stacktrace #1280
This commit is contained in:
@@ -715,7 +715,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:
|
||||
stderr.writeln("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