14
edits
(Add information about compiling director with `--enable-asan`. The buildbot will error when finding a memory leak.) |
(Updated engine authors, added debugger commands) |
||
Line 1: | Line 1: | ||
{{EngineDescription| | {{EngineDescription| | ||
name=director| | name=director| | ||
developer=[[User:sev|sev]], [[User:iskrich|iskrich]], [[User:djsrv|djsrv]], [[User:npjg|npjg]], [[User:Mstea|mstea]]| | developer=[[User:sev|sev]], [[User:iskrich|iskrich]], [[User:djsrv|djsrv]], [[User:npjg|npjg]], [[User:Mstea|mstea]], [[User:moralrecordings|moralrecordings]]| | ||
companies=[[Macromedia]]| | companies=[[Macromedia]]| | ||
usedBy=[[Director/Games|hundreds of games]]| | usedBy=[[Director/Games|hundreds of games]]| | ||
Line 72: | Line 72: | ||
The useful ones are: | The useful ones are: | ||
* lingoexec -- tracing Lingo execution | * lingoexec -- tracing Lingo execution. There are varying levels of verbosity, --debuglevel=5 is probably the best for showing every instruction as it is executed. | ||
* lingocompile -- details about Lingo script compilation | * lingocompile -- details about Lingo script compilation | ||
* lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing | * lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing | ||
*lingostrict -- drop to the debugger if we hit a Lingo exception. This is a condition which would cause an interrupting error in the Macromedia Director editor; the player will just abort the script. | |||
* compileonly -- useful with test targets when we load all files in the directory. This is how we created that status table of Lingo Workshop movies | * compileonly -- useful with test targets when we load all files in the directory. This is how we created that status table of Lingo Workshop movies | ||
* slow -- add 2s delay between every frame. Useful at higher debug levels, so you could see what is going on instead of munching megabytes of logs | * slow -- add 2s delay between every frame. Useful at higher debug levels, so you could see what is going on instead of munching megabytes of logs | ||
Line 80: | Line 81: | ||
* bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts | * bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts | ||
* loading -- produces tons of deciphered data from movie files. | * loading -- produces tons of deciphered data from movie files. | ||
*sound -- log engine calls related to sound | |||
*xobj -- log engine calls to third-party XLibs | |||
=== Compilation === | === Compilation === | ||
Line 98: | Line 101: | ||
== Debugger Commands == | == Debugger Commands == | ||
To open the [[Debugging ScummVM|interactive debugger console]] press the key combination that is set for "Open Debugger" in the "Keymaps" tab from ScummVM options (default should be Ctrl+Alt+d). | To open the [[Debugging ScummVM|interactive debugger console]] press the key combination that is set for "Open Debugger" in the "Keymaps" tab from ScummVM options (default should be Ctrl+Alt+d).<syntaxhighlight lang="text"> | ||
Debug flags | |||
----------- | |||
debugflag_list - Lists the available debug flags and their status | |||
debugflag_enable - Enables a debug flag | |||
debugflag_disable - Disables a debug flag | |||
debuglevel - Shows or sets debug level | |||
Commands | |||
-------- | |||
Player: | |||
version - Shows the Director version | |||
info - Shows information about the current movie | |||
movie / m [moviePath] - Get or sets the current movie | |||
frame / f [frameNum] - Gets or sets the current score frame | |||
channels / chan [frameNum] - Shows channel information for a score frame | |||
cast [castNum] - Shows the cast list or castNum for the current movie | |||
nextframe / nf [n] - Steps forward one or more score frames | |||
nextmovie / nm - Steps forward until the next change of movie | |||
Lingo execution: | |||
print / p [statement] - Evaluates a single Lingo statement | |||
repl - Switches to a REPL interface for evaluating Lingo statements | |||
backtrace / bt - Prints a backtrace of all stack frames | |||
disasm / da [scriptId:funcName] - Lists the bytecode disassembly for a script function | |||
disasm / da all - Lists the bytecode disassembly for all available script functions | |||
stack / st - Lists the elements on the stack | |||
scriptframe / sf - Prints the current script frame | |||
funcs - Lists all of the functions available in the current script frame | |||
var / v - Lists all of the variables available in the current script frame | |||
markers / mk - Lists all of the frame markers in the current score | |||
step / s [n] - Steps forward one or more operations | |||
next / n [n] - Steps forward one or more operations, skips over calls | |||
finish / fin - Steps until the current stack frame returns | |||
continue / c - Continues execution | |||
Breakpoints: | |||
bpset / b - Creates a breakpoint at the current Lingo function and offset | |||
bpset / b [funcName] - Creates a breakpoint on a Lingo function matching a name | |||
bpset / b [offset] - Creates a breakpoint on the current Lingo function matching an offset | |||
bpset / b [funcName] [offset] - Creates a breakpoint on a Lingo function matching a name and offset | |||
bpset / b [scriptId:funcName] - Creates a breakpoint on a Lingo function matching a script ID and name | |||
bpset / b [scriptId:funcName] [offset] - Creates a breakpoint on a Lingo function matching a script ID, name and offset | |||
bpmovie / bm [moviePath] - Create a breakpoint on a switch to a movie | |||
bpframe / bf [frameId] - Create a breakpoint on a frame in the score | |||
bpframe / bf [moviePath] [frameId] - Create a breakpoint on a frame in the score of a specific movie | |||
bpentity / be [entityName] - Create a breakpoint on a Lingo "the" entity being read or modified | |||
bpentity / be [entityName] [r/w/rw] - Create a breakpoint on a Lingo "the" entity being accessed in a specific way | |||
bpentity / be [entityName:fieldName] - Create a breakpoint on a Lingo "the" field being read or modified | |||
bpentity / be [entityName:fieldName] [r/w/rw] - Create a breakpoint on a Lingo "the" field being accessed in a specific way | |||
bpvar / bv [varName] - Create a breakpoint on a Lingo variable being read or modified | |||
bpvar / bv [varName] [r/w/rw] - Create a breakpoint on a Lingo variable being accessed in a specific way | |||
bpevent / bn [eventName] - Create a breakpoint on a Lingo event | |||
bpdel [n] - Deletes a specific breakpoint | |||
bpenable [n] - Enables a specific breakpoint | |||
bpdisable [n] - Disables a specific breakpoint | |||
bplist - Lists all breakpoints | |||
GFX: | |||
draw [cast|frame|off] - Draws debug outlines for cast or frame number | |||
</syntaxhighlight> | |||
=== lingo === | === lingo === |
edits