mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-09 14:32:53 +00:00
writeStackTrace now officially has no IO effect anymore for more convenient debugging
This commit is contained in:
@@ -220,3 +220,6 @@ styledEcho "Red on Green.", resetStyle
|
||||
- If you use ``--dynlibOverride:ssl`` with OpenSSL 1.0.x, you now have to
|
||||
define ``openssl10`` symbol (``-d:openssl10``). By default OpenSSL 1.1.x is
|
||||
assumed.
|
||||
|
||||
- ``writeStackTrace`` is now proclaimed to have no IO effect (even though it does)
|
||||
so that it is more useful for debugging purposes.
|
||||
|
||||
@@ -3211,9 +3211,10 @@ when not defined(JS): #and not defined(nimscript):
|
||||
## allows you to override the behaviour of your application when CTRL+C
|
||||
## is pressed. Only one such hook is supported.
|
||||
|
||||
proc writeStackTrace*() {.tags: [WriteIOEffect], gcsafe.}
|
||||
proc writeStackTrace*() {.tags: [], gcsafe.}
|
||||
## writes the current stack trace to ``stderr``. This is only works
|
||||
## for debug builds.
|
||||
## for debug builds. Since it's usually used for debugging, this
|
||||
## is proclaimed to have no IO effect!
|
||||
when hostOS != "standalone":
|
||||
proc getStackTrace*(): string {.gcsafe.}
|
||||
## gets the current stack trace. This only works for debug builds.
|
||||
|
||||
@@ -386,9 +386,9 @@ proc writeStackTrace() =
|
||||
when hasSomeStackTrace:
|
||||
var s = ""
|
||||
rawWriteStackTrace(s)
|
||||
showErrorMessage(s)
|
||||
cast[proc (s: string) {.noSideEffect, tags: [], nimcall.}](showErrorMessage)(s)
|
||||
else:
|
||||
showErrorMessage("No stack traceback available\n")
|
||||
cast[proc (s: string) {.noSideEffect, tags: [], nimcall.}](showErrorMessage)("No stack traceback available\n")
|
||||
|
||||
proc getStackTrace(): string =
|
||||
when hasSomeStackTrace:
|
||||
|
||||
Reference in New Issue
Block a user