tracesimple
Definition
-- @/lua/common/libs/StackTracePlus/StackTracePlus.lua:325
function _M.stacktraceSimple(thread, message, level, level_limit, dump_locals)
if type(thread) ~= "thread" then
-- shift parameters left
thread, message, level, level_limit, dump_locals = nil, thread, message, level, level_limit
end
thread = thread or coroutine.running()
level = level or 1
if dump_locals == nil then
dump_locals = true
end
local dumper = Dumper.new(thread)
local original_error
if type(message) == "table" then
dumper:add("an error object {\n")
local first = true
for k,v in pairs(message) do
if first then
dumper:add(" ")
first = false
else
dumper:add(",\n ")
end
dumper:add(safe_tostring(k))
dumper:add(": ")
dumper:add(safe_tostring(v))
end
dumper:add("\n}")
original_error = dumper:concat_lines()
elseif type(message) == "string" then
dumper:add(message)
original_error = message
end
if level == nil or level_limit == nil then
dumper:add('Simple Stack Trace:')
end
--print(error_message)
local level_to_show = level
if dumper.dumping_same_thread then level = level + 1 end
local info = dumper.getinfo(level, "nSlf")
while info do
if info.what == "main" then
if string_sub(info.source, 1, 1) == "@" then
dumper:add_f("\n(%d) main chunk of file '%s' at line %d", level_to_show, string_sub(info.source, 2), info.currentline)
else
dumper:add_f("\n(%d) %s:%d", level_to_show, info.source, info.currentline)
end
elseif info.what == "C" then
--print(info.namewhat, info.name)
--for k,v in pairs(info) do print(k,v, type(v)) end
local function_name = m_user_known_functions[info.func] or m_known_functions[info.func] or info.name or tostring(info.func)
dumper:add_f("\n(%d) %s C function '%s'", level_to_show, info.namewhat, function_name)
--dumper:add_f("%s%s = C %s\n", prefix, name, (m_known_functions[value] and ("function: " .. m_known_functions[value]) or tostring(value)))
elseif info.what == "tail" then
--print("tail")
--for k,v in pairs(info) do print(k,v, type(v)) end--print(info.namewhat, info.name)
dumper:add_f("\n(%d) tail call", level_to_show)
elseif info.what == "Lua" then
local source = info.source
local function_name = m_user_known_functions[info.func] or m_known_functions[info.func] or info.name
if source:sub(2, 7) == "string" then
source = source:sub(9)
end
local was_guessed = false
if not function_name or function_name == "?" then
--for k,v in pairs(info) do print(k,v, type(v)) end
function_name = GuessFunctionName(info)
was_guessed = true
end
-- test if we have a file name
local function_type = (info.namewhat == "") and "function" or info.namewhat
if info.source and info.source:sub(1, 1) == "@" then
dumper:add_f("\n(%d) %s:%d %s (%s)", level_to_show, info.source:sub(2), info.currentline, function_name, function_type)
elseif info.source and info.source:sub(1,1) == '#' then
dumper:add_f("\n(%d) Lua %s '%s' at template '%s:%d'%s", level_to_show, function_type, function_name, info.source:sub(2), info.currentline, was_guessed and " (best guess)" or "")
else
dumper:add_f("\n(%d) %s:%d: %s", level_to_show, source:sub(2, -3), info.currentline, function_name)
end
else
dumper:add_f("\n(%d) unknown frame %s", level_to_show, info.what)
end
level = level + 1
level_to_show = level_to_show + 1
if level_limit ~= nil and level > level_limit then
break
end
info = dumper.getinfo(level, "nSlf")
end
return dumper:concat_lines(), original_error
end
Callers
@/lua/ge/extensions/core/vehicleBridge.lua
--if params[1] == 'setFreeze' then
--print(debug.tracesimple())
--end
@/lua/common/utils.lua
log("E", "jsonWriteFile", "Provided objType is not a table but "..dumps(objType)..", unable to write to: "..dumps(filename))
print(debug.tracesimple())
return false
log("E", "jsonWriteFile", "Unable to open file for writing: "..dumps(filename))
print(debug.tracesimple())
end
@/lua/ge/ge_utils.lua
log("E", "", "The 'setCEFFocus()' function is deprecated and doesn't need to be called by the following code:")
print(debug.tracesimple())
end
@/lua/ge/extensions/core/settings/settings.lua
--log("W", "", "This call to save() settings is being ignored, because it is flagged as a recursive call via 'M.loadingSettingsInProgress'. This should not happen, please review callstack below:")
--print(debug.tracesimple())
return
--log("W", "", "This call to save() settings is being ignored, because it is flagged as a recursive call via 'alreadySaving'. This should not happen, please review callstack below:")
--print(debug.tracesimple())
return
--log("W", "", "This call from setState to save() settings is not even attempted, because it is flagged via 'M.loadingSettingsInProgress' as a recursive call. This should not happen, please review callstack below:")
--print(debug.tracesimple())
end
--log("W", "", "This call to setValue() settings is being ignored, because it is flagged as a recursive call via 'M.settingInProgress["..dumps(key).."]'. This should not happen, please review callstack below:")
--print(debug.tracesimple())
return
@/lua/ge/client/init.lua
-- log('I','client', "initBaseClient start...")
-- dumps(debug.tracesimple())
@/lua/ge/extensions/career/modules/playerAttributes.lua
label = "Unknown Reason",
origin = debug.tracesimple()
}
@/lua/vehicle/extensions/core/quickAccess.lua
end
args.origin = debug.tracesimple()
return true
@/lua/ge/extensions/gameplay/missions/progress.lua
end
local entry = { date = os.time(), humanDate = os.date("!%Y-%m-%dT%TZ"), data = data or {}, source = debug.tracesimple() }
table.insert(file, entry)
@/lua/ge/extensions/career/branches.lua
log('W', '', 'Using legacy branch path: ' .. pathId .. ' -> ' .. M.oldAttributeNamesToNewNames[pathId])
log('D', '', 'Called from:\n' .. debug.tracesimple())
end
@/lua/ge/extensions/gameplay/missions/missionManager.lua
--dump("attemptAbandonMissionWithFade")
--print(debug.tracesimple())
if not mission then
--dump("stop")
--print(debug.tracesimple())
data = data or {}
@/lua/ge/extensions/flowgraph/graph.lua
log("E", "", "Duplicate ID error! Graph")
print(debug.tracesimple())
end
--dumpz(node, 1)
--print(debug.tracesimple())
--ui_flowgraph_editor.DeleteNode(node.id)
@/lua/ge/extensions/flowgraph/manager.lua
log('E', '', 'Removing Graph.'..key)
print(debug.tracesimple())
end
if not contained then
log('E', logTag, 'Tried to remove graph when graphs was actually not in manager! ' .. debug.tracesimple())
return
if not status then
log('E', logTag, 'error while loading node ' .. tostring(requireFilename) .. ' : ' .. tostring(node) .. '. ' .. debug.tracesimple())
else
@/lua/ge/extensions/gameplay/sites/sites.lua
--log("W","","Finalized too often: "..self._finalized)
--print(debug.tracesimple())
end
@/lua/vehicle/ve_utils.lua
if type(header) ~= "table" then
log("W", "tableFromHeaderTable", "*** Invalid table header: " .. dumpsz(entry, 2) .. " - " .. debug.tracesimple())
@/lua/ge/extensions/career/modules/delivery/generator.lua
end
print(debug.tracesimple())
end
@/lua/ge/extensions/gameplay/missions/missionTypes/flowMission.lua
log("E","","called processCommonSettings during mission active! This shouldnt happen.")
print(debug.tracesimple())
end
@/lua/ge/extensions/util/stepHandler.lua
local getStepOrigin = function()
local origin = split(debug.tracesimple(), "\n")
return origin[4]
@/lua/vehicle/extensions/outgauge.lua
log("E", "", "Something tried to use the deprecated 'lua/vehicle/extensions/outgauge.lua' file. If you are the programmer/modder responsible for that attempt, please check https://go.beamng.com/protocols")
print(debug.tracesimple())
return {}
@/lua/ge/extensions/core/input/bindings.lua
log("E", "", "bindings.menuActive has been deprecated in favour of the 'menuActionMapEnabled' boolean flag on javascript side (see main.js for examples). The default behaviour is probably working correctly already, in which case you can simply delete the call to menuActive. Stacktrace provided below so you can update the relevant code:")
print(debug.tracesimple())
M.setMenuActionMapEnabled(enabled)
@/lua/common/extensions.lua
--print("Unloading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
--print("Unloading "..vmType.." extension: "..dumps(extName, extPath))
--print("Loading "..vmType.." extension: "..dumps(extName, extPath).."\n"..debug.tracesimple())
--print("Loading "..vmType.." extension: "..dumps(extName, extPath))
@/lua/ge/extensions/editor/util/editorElementHelper.lua
log("W","",".prefab should not be used for extension anymore. please upgrade to '.prefab.json'")
--print(debug.tracesimple())
end
log("W","",".prefab should not be used for extension anymore. please upgrade to '.prefab.json'")
--print(debug.tracesimple())
end
@/lua/ge/extensions/flowgraph/states.lua
--print("Clearing states and killing ext proxies")
--print(debug.tracesimple())
if self.resolveExtProxy then
@/lua/ge/extensions/flowgraph/pin.lua
log("E", "", "Duplicate ID error! Pin")
print(debug.tracesimple())
end
print("Changin Pin value to " .. tostring(value))
print(debug.tracesimple())
end
@/lua/vehicle/motionSim.lua
log("E", "", "Something tried to use the deprecated 'lua/vehicle/motionSim.lua' file. If you are the programmer/modder responsible for that attempt, please check https://go.beamng.com/protocols")
print(debug.tracesimple())
return {}
@/lua/ge/extensions/flowgraph/basenode.lua
print("Tried to set value of empty pin! Not allowed.")
print(debug.tracesimple())
end
log("E",logTag,"Duplicate ID error! Node")
print(debug.tracesimple())
end
__index = function(self, key) return emptyPin end,
__newindex = function(self, key, value) log('E', self.mgr.logTag, 'cannot write to input pin: ' .. tostring(key)) print(debug.tracesimple()) end,
})
if self.nodeType == 'vehicle/special/customVlua' then
-- print(debug.tracesimple())
--dump(nodeData)
@/lua/ge/extensions/editor/util/transformUtil.lua
--dump(editor.editMode and editor.editMode.displayName)
--print(debug.tracesimple())
if self:correctEditMode() then
@/lua/ge/extensions/core/vehicleTriggers.lua
local function onActionEvent(actionNumber, inputValue)
--print(debug.tracesimple())
-- dump{'triggers.onActionEvent', actionNumber, inputValue}
@/lua/ge/main.lua
log("W", b, "The long log message above has been triggered by:")
print(debug.tracesimple())
end
log('E','','loadGameModeModules(xxx) will be deprecated soon. Instead, replace with these calls:\nunloadAutoExtensions()\nloadPresetExtensions()\nextensions.load(xxx) -- you can omit this line if no parameter was passed')
print(debug.tracesimple())
log('E','','== OUTDATED MOD CODE ==')
log('E','',"registerCoreModule("..dumps(extensionName).." will be deprecated soon. Instead, replace with: setExtensionUnloadMode(M, \"manual\")")
print(debug.tracesimple())
log('E','','== OUTDATED MOD CODE ==')
@/lua/ge/extensions/core/flowgraphManager.lua
if not status then
log('E', '', 'error while loading node ' .. tostring(requireFilename) .. ' : ' .. tostring(node) .. '. ' .. debug.tracesimple())
else
@/lua/ge/extensions/core/gamestate.lua
--dump(loadingScreenRequests)
--print(debug.tracesimple())
log('D', logTag, 'exiting : ' .. tagName)
@/lua/vehicle/extensions/outsim.lua
log("E", "", "Something tried to use the deprecated 'lua/vehicle/extensions/outsim.lua' file. If you are the programmer/modder responsible for that attempt, please check https://go.beamng.com/protocols")
print(debug.tracesimple())
return {}
@/lua/ge/extensions/flowgraph/link.lua
log("E","","Duplicate ID error! Link")
print(debug.tracesimple())
end
log("E","","Duplicate ID error! Link")
print(debug.tracesimple())
end
@/lua/common/jbeamWriter.lua
log("E", "jsonWriteFile", "Unable to open file for writing: "..dumps(filename))
print(debug.tracesimple())
end
@/lua/common/luaProfiler.lua
log("E", "", "luaProfiler: Missing start")
print(debug.tracesimple())
return
@/lua/ge/spawn.lua
log("W", logTag, "Using Old TS Spawning Code to spawn vehicle!: " .. dumps(vehicleModel))
print(debug.tracesimple())
spawnPlayerOld()
@/lua/ge/extensions/gameplay/markerInteraction.lua
log("E","","Deprecated startMissionById")
print(debug.tracesimple())
end
log("E","","Deprecated stopMissionById")
print(debug.tracesimple())
end
log("E","","Deprecated changeUserSettings")
print(debug.tracesimple())
end