From 1d833bb80779ed9c9e1d7ec6c7fab231ebf48182 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Fri, 9 Aug 2013 17:48:21 +0200 Subject: Remove all trailing whitespace --- util/debug.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'util/debug.lua') diff --git a/util/debug.lua b/util/debug.lua index bff0e347..1f1ec9df 100644 --- a/util/debug.lua +++ b/util/debug.lua @@ -93,14 +93,14 @@ function get_traceback_table(thread, start_level) info = debug.getinfo(level+1); end if not info then break; end - + levels[(level-start_level)+1] = { level = level; info = info; locals = get_locals_table(level+1); upvalues = get_upvalues_table(info.func); }; - end + end return levels; end @@ -137,12 +137,12 @@ function _traceback(thread, message, level) level = level or 1; message = message and (message.."\n") or ""; - + -- +3 counts for this function, and the pcall() and wrapper above us local levels = get_traceback_table(thread, level+3); - + local last_source_desc; - + local lines = {}; for nlevel, level in ipairs(levels) do local info = level.info; -- cgit v1.2.3 From 51549fe050a1aec00284d1e2599c93010bc763c2 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 10 Aug 2013 20:30:40 +0100 Subject: util.debug: Fixes to make coroutine tracebacks work properly --- util/debug.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'util/debug.lua') diff --git a/util/debug.lua b/util/debug.lua index 1f1ec9df..52ba52d0 100644 --- a/util/debug.lua +++ b/util/debug.lua @@ -88,7 +88,7 @@ function get_traceback_table(thread, start_level) for level = start_level, math.huge do local info; if thread then - info = debug.getinfo(thread, level+1); + info = debug.getinfo(thread, level); else info = debug.getinfo(level+1); end @@ -97,7 +97,7 @@ function get_traceback_table(thread, start_level) levels[(level-start_level)+1] = { level = level; info = info; - locals = get_locals_table(level+1); + locals = not thread and get_locals_table(level+1); upvalues = get_upvalues_table(info.func); }; end @@ -134,12 +134,12 @@ function _traceback(thread, message, level) return nil; -- debug.traceback() does this end - level = level or 1; + level = level or 0; message = message and (message.."\n") or ""; - -- +3 counts for this function, and the pcall() and wrapper above us - local levels = get_traceback_table(thread, level+3); + -- +3 counts for this function, and the pcall() and wrapper above us, the +1... I don't know. + local levels = get_traceback_table(thread, level+(thread == nil and 4 or 0)); local last_source_desc; @@ -171,9 +171,11 @@ function _traceback(thread, message, level) nlevel = nlevel-1; table.insert(lines, "\t"..(nlevel==0 and ">" or " ")..getstring(styles.level_num, "("..nlevel..") ")..line); local npadding = (" "):rep(#tostring(nlevel)); - local locals_str = string_from_var_table(level.locals, optimal_line_length, "\t "..npadding); - if locals_str then - table.insert(lines, "\t "..npadding.."Locals: "..locals_str); + if level.locals then + local locals_str = string_from_var_table(level.locals, optimal_line_length, "\t "..npadding); + if locals_str then + table.insert(lines, "\t "..npadding.."Locals: "..locals_str); + end end local upvalues_str = string_from_var_table(level.upvalues, optimal_line_length, "\t "..npadding); if upvalues_str then -- cgit v1.2.3 From 6cd5b48d8f0643d6e0e6d27b20099f5a9c410317 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 10 Aug 2013 20:40:45 +0100 Subject: util.debug: Further fix to display locals in extended tracebacks --- util/debug.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'util/debug.lua') diff --git a/util/debug.lua b/util/debug.lua index 52ba52d0..417359f8 100644 --- a/util/debug.lua +++ b/util/debug.lua @@ -24,11 +24,13 @@ do end module("debugx", package.seeall); -function get_locals_table(level) - level = level + 1; -- Skip this function itself +function get_locals_table(thread, level) + if not thread then + level = level + 1; -- Skip this function itself + end local locals = {}; for local_num = 1, math.huge do - local name, value = debug.getlocal(level, local_num); + local name, value = debug.getlocal(thread, level, local_num); if not name then break; end table.insert(locals, { name = name, value = value }); end @@ -97,7 +99,7 @@ function get_traceback_table(thread, start_level) levels[(level-start_level)+1] = { level = level; info = info; - locals = not thread and get_locals_table(level+1); + locals = get_locals_table(thread, level+(thread and 0 or 1)); upvalues = get_upvalues_table(info.func); }; end -- cgit v1.2.3 From 82f565b55b4bb068050330e1f0d8185c3c2a7bb2 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 11 Aug 2013 10:42:58 +0100 Subject: util.debug: Fix level of locals when inspecting a coroutine --- util/debug.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'util/debug.lua') diff --git a/util/debug.lua b/util/debug.lua index 417359f8..91f691e1 100644 --- a/util/debug.lua +++ b/util/debug.lua @@ -25,12 +25,14 @@ end module("debugx", package.seeall); function get_locals_table(thread, level) - if not thread then - level = level + 1; -- Skip this function itself - end local locals = {}; for local_num = 1, math.huge do - local name, value = debug.getlocal(thread, level, local_num); + local name, value; + if thread then + name, value = debug.getlocal(thread, level, local_num); + else + name, value = debug.getlocal(level+1, local_num); + end if not name then break; end table.insert(locals, { name = name, value = value }); end -- cgit v1.2.3