Nasal/debug.nas: backtrace(): reinstate mechanism to truncate long filenames.
Also made it configurable.
This commit is contained in:
parent
bdedb1dcc4
commit
68997879d3
1 changed files with 14 additions and 1 deletions
|
@ -305,7 +305,18 @@ var funcname = func(f) {
|
||||||
return "-unknown-";
|
return "-unknown-";
|
||||||
}
|
}
|
||||||
|
|
||||||
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0) {
|
# Write backtrace information.
|
||||||
|
#
|
||||||
|
# desc:
|
||||||
|
# Text to write in first line.
|
||||||
|
# dump_vars:
|
||||||
|
# If true, show info about variables.
|
||||||
|
# skip_level:
|
||||||
|
# How many top-level stack frames to skip.
|
||||||
|
# shorten:
|
||||||
|
# If greater than 10, max filename length before being trimmed.
|
||||||
|
#
|
||||||
|
var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0, shorten = 50) {
|
||||||
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
var d = (desc == nil) ? "" : " '" ~ desc ~ "'";
|
||||||
print("");
|
print("");
|
||||||
print(_title("### backtrace" ~ d ~ " ###"));
|
print(_title("### backtrace" ~ d ~ " ###"));
|
||||||
|
@ -314,6 +325,8 @@ var backtrace = func(desc = nil, dump_vars = 1, skip_level = 0) {
|
||||||
if ((var v = caller(i)) == nil) return caller(i - 1);
|
if ((var v = caller(i)) == nil) return caller(i - 1);
|
||||||
var filename = v[2];
|
var filename = v[2];
|
||||||
var line = v[3];
|
var line = v[3];
|
||||||
|
if (shorten >= 10 and size(filename) > shorten)
|
||||||
|
filename = substr(filename, 0, 5)~"[...]"~substr(filename, -(shorten-10));
|
||||||
print(_section(sprintf("#%-2d called from %s:%d (%s) (locals %s):",
|
print(_section(sprintf("#%-2d called from %s:%d (%s) (locals %s):",
|
||||||
i - skip_level, filename, line, funcname(v[1]), id(v[0]))));
|
i - skip_level, filename, line, funcname(v[1]), id(v[0]))));
|
||||||
if (dump_vars) dump(v[0]);
|
if (dump_vars) dump(v[0]);
|
||||||
|
|
Loading…
Reference in a new issue