diff --git a/ldt.lua b/ldt.lua index c570c07..9794e89 100644 --- a/ldt.lua +++ b/ldt.lua @@ -1278,9 +1278,12 @@ ldb = { return C.endwin() end, guard = function(fn, ...) - return xpcall(fn, (function(err_msg) - return xpcall(ldb.run_debugger, err_hand, err_msg) - end), ...) + local handler + handler = function(err_msg) + xpcall(ldb.run_debugger, err_hand, err_msg) + return print(debug.traceback(err_msg, 2)) + end + return xpcall(fn, handler, ...) end, breakpoint = function() return xpcall(ldb.run_debugger, err_hand, "Breakpoint triggered!") diff --git a/ldt.moon b/ldt.moon index 9810736..c234c85 100644 --- a/ldt.moon +++ b/ldt.moon @@ -895,7 +895,10 @@ ldb = { C.endwin! guard: (fn, ...)-> - return xpcall(fn, ((err_msg)-> xpcall(ldb.run_debugger, err_hand, err_msg)), ...) + handler = (err_msg)-> + xpcall(ldb.run_debugger, err_hand, err_msg) + print(debug.traceback(err_msg, 2)) + return xpcall(fn, handler, ...) breakpoint: -> return xpcall(ldb.run_debugger, err_hand, "Breakpoint triggered!")