aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-12-12 23:13:34 +0000
committerJustin Clark-Casey (justincc)2012-12-12 23:13:34 +0000
commit047270bdc83d029486215a418fada27b225dbab0 (patch)
tree8bb1b091b67d322a56ae1d25bb5511a23369c03a /OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
parentAdd asset id to "show script" and "show scripts" command output to make it ea... (diff)
downloadopensim-SC_OLD-047270bdc83d029486215a418fada27b225dbab0.zip
opensim-SC_OLD-047270bdc83d029486215a418fada27b225dbab0.tar.gz
opensim-SC_OLD-047270bdc83d029486215a418fada27b225dbab0.tar.bz2
opensim-SC_OLD-047270bdc83d029486215a418fada27b225dbab0.tar.xz
Add "debug script log" command to allow setting a numeric debug level on individual IScriptInstances for debugging purposes.
Current, state changes and event fires can be logged for individual scripts. See command help for more details.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine/XEngine.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs53
1 files changed, 48 insertions, 5 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 986f658..828f2fb 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -304,7 +304,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
304 304
305 MainConsole.Instance.Commands.AddCommand( 305 MainConsole.Instance.Commands.AddCommand(
306 "Scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information", 306 "Scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information",
307 "Show information on all scripts known to the script engine." 307 "Show information on all scripts known to the script engine.\n"
308 + "If a <script-item-uuid> is given then only information on that script will be shown.", 308 + "If a <script-item-uuid> is given then only information on that script will be shown.",
309 HandleShowScripts); 309 HandleShowScripts);
310 310
@@ -323,22 +323,30 @@ namespace OpenSim.Region.ScriptEngine.XEngine
323 MainConsole.Instance.Commands.AddCommand( 323 MainConsole.Instance.Commands.AddCommand(
324 "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts", 324 "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts",
325 "Resumes all currently suspended scripts.\n" 325 "Resumes all currently suspended scripts.\n"
326 + "Resumed scripts will process all events accumulated whilst suspended." 326 + "Resumed scripts will process all events accumulated whilst suspended.\n"
327 + "If a <script-item-uuid> is given then only that script will be resumed. Otherwise, all suitable scripts are resumed.", 327 + "If a <script-item-uuid> is given then only that script will be resumed. Otherwise, all suitable scripts are resumed.",
328 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript)); 328 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript));
329 329
330 MainConsole.Instance.Commands.AddCommand( 330 MainConsole.Instance.Commands.AddCommand(
331 "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts", 331 "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts",
332 "Stops all running scripts." 332 "Stops all running scripts.\n"
333 + "If a <script-item-uuid> is given then only that script will be stopped. Otherwise, all suitable scripts are stopped.", 333 + "If a <script-item-uuid> is given then only that script will be stopped. Otherwise, all suitable scripts are stopped.",
334 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript)); 334 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript));
335 335
336 MainConsole.Instance.Commands.AddCommand( 336 MainConsole.Instance.Commands.AddCommand(
337 "Scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts", 337 "Scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts",
338 "Starts all stopped scripts." 338 "Starts all stopped scripts.\n"
339 + "If a <script-item-uuid> is given then only that script will be started. Otherwise, all suitable scripts are started.", 339 + "If a <script-item-uuid> is given then only that script will be started. Otherwise, all suitable scripts are started.",
340 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript)); 340 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript));
341 341
342 MainConsole.Instance.Commands.AddCommand(
343 "Scripts", false, "debug script log", "debug scripts log <item-id> <log-level>", "Extra debug logging for a script",
344 "Activates or deactivates extra debug logging for the given script.\n"
345 + "Level == 0, deactivate extra debug logging.\n"
346 + "Level >= 1, log state changes.\n"
347 + "Level >= 2, log event invocations.\n",
348 HandleDebugScriptLogCommand);
349
342// MainConsole.Instance.Commands.AddCommand( 350// MainConsole.Instance.Commands.AddCommand(
343// "Debug", false, "debug xengine", "debug xengine [<level>]", 351// "Debug", false, "debug xengine", "debug xengine [<level>]",
344// "Turn on detailed xengine debugging.", 352// "Turn on detailed xengine debugging.",
@@ -347,6 +355,41 @@ namespace OpenSim.Region.ScriptEngine.XEngine
347// HandleDebugLevelCommand); 355// HandleDebugLevelCommand);
348 } 356 }
349 357
358 private void HandleDebugScriptLogCommand(string module, string[] args)
359 {
360 if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene))
361 return;
362
363 if (args.Length != 5)
364 {
365 MainConsole.Instance.Output("Usage: debug script log <item-id> <log-level>");
366 return;
367 }
368
369 UUID itemId;
370
371 if (!ConsoleUtil.TryParseConsoleUuid(MainConsole.Instance, args[3], out itemId))
372 return;
373
374 int newLevel;
375
376 if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out newLevel))
377 return;
378
379 IScriptInstance si;
380
381 lock (m_Scripts)
382 {
383 // XXX: We can't give the user feedback on a bad item id because this may apply to a different script
384 // engine
385 if (!m_Scripts.TryGetValue(itemId, out si))
386 return;
387 }
388
389 si.DebugLevel = newLevel;
390 MainConsole.Instance.OutputFormat("Set debug level of {0} {1} to {2}", si.ScriptName, si.ItemID, newLevel);
391 }
392
350 /// <summary> 393 /// <summary>
351 /// Change debug level 394 /// Change debug level
352 /// </summary> 395 /// </summary>
@@ -418,7 +461,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
418 461
419 if (!UUID.TryParse(rawItemId, out itemId)) 462 if (!UUID.TryParse(rawItemId, out itemId))
420 { 463 {
421 MainConsole.Instance.OutputFormat("Error - {0} is not a valid UUID", rawItemId); 464 MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid UUID", rawItemId);
422 return; 465 return;
423 } 466 }
424 467