|
GEOS SDK TechDocs
|
|
noStructEnum ...
|
patchin ...
objmessagebrk
objmessagebrk [<address>]
Examples:
-
"objmessagebrk MyObj"
-
break whenever a message is sent to MyObj
-
"objmessagebrk"
-
stop intercepting messages
Break whenever a message is sent to a particular object via ObjMessage.
-
The <address> argument is the address to an object to watch for messages being sent to it. If no argument is specified then the watching is stopped.
-
This breaks whenever a message is sent (before they get on the message queue. This enables one to track identical messages to an object which can be removed.
See Also: objwatch,
mwatch,
procmessagebrk,
pobject.
objwalk
objwalk [<address>]
Examples: "objwalk"
Prints out information about an object block.
-
The <address> argument is the address of the block to print. The default is the block pointed at by DS.
See Also: lhwalk,
pobject.
objwatch
objwatch [<address>]
Examples:
-
"objwatch ds:si"
-
watch the messages which reach the object at DS:SI
-
"objwatch MyObject"
-
watch the messages which reach MyObject
-
"objwatch"
-
Watch the messages which reach the process object.
Display message calls that have reached a particular object.
-
The <address> argument is the address of the object to watch.
-
This returns the token of the breakpoint being used to watch message deliveries to the object. Use the "brk" command to enable, disable, or turn off the watching of the object.
See Also: brk,
mwatch,
objmessagebrk,
procmessagebrk,
pobject.
omfq
omfq <message> <object> <args>*
Examples:
-
"omfq MSG_META_QUIT *HelloApp"
-
Sends
MSG_META_QUIT
to the *
HelloApp
object.
Forces a message for an object onto its event queue.
-
This command calls ObjMessage, passing it
di=mask MF_FORCE_QUEUE.
-
<args> is the set of additional parameters to pass to ObjMessage. It consists of <variable/register> <value> pairs, which are passed to the "assign" command. As a special case, if the variable is "push", the value (a word) is pushed onto the stack and is popped when the message has been queued.
-
The registers active before you issued this command are always restored, regardless of whether the call to
ObjMessage
completes successfully. This is in contrast to the "call" command, which leaves you where the machine stopped with the previous state lost.
-
This command will only work when execution halts in the thread that is to receive
the message.
See Also: call.
pappcache
pappcache
Examples:
-
"pappcache"
- Print out current state of the app-cache
Prints out the current state of the system application cache, for systems operating in transparent launch mode.
Specifically, this command prints out:
-
Applications in the cache (First choice for detaching)
-
Top full-screen App (Not detached except by another full screen app)
-
Desk accessories (detached only as last resort)
-
Application geodes in the process of detaching
patch
patch [<addr>]
patch del <addr>*
Patch assists in creating breakpoints that invisibly make small changes to code. This can help the programmer find several bugs without remaking and redownloading.
-
If you give no <addr> when creating a patch, the patch will be placed at the most-recently accessed address, as set by the command that most-recently accessed memory (e.g. bytes, words, listi, imem, etc.)
-
When creating a patch, you are prompted for its contents, each line of which comes from the following command set:
Patch Command Set
|
Form | Meaning | Example |
|
<reg> = <value> | assign value to reg | ax = bx dl = 5 |
|
push <reg>|<value> | push value | push ax push 45 |
|
pop <reg>|<value> | pop value | pop ax pop 45 |
|
pop | pop nothing (sp=sp+2) | pop |
|
jmp <address> | change ip | jmp UI_Attach+45 |
|
scall <address> <regs> | call routine (save) | scall MemLock ax = 3 |
|
mcall<address> <regs> | call routine (modify) | mcall MemLock ax = 3 |
|
xchg <reg> <reg> | swap two registers | xchg ax bx |
|
set <flag> | set condition flag | set CF set ZF |
|
reset <flag> | reset condition flag | reset CF reset ZF |
|
if <flag> | if flag set then ... | if CF |
|
if !<flag> | if flag reset then ... | if !ZF |
|
if <expr> | if expr then ... | if foo == 4 |
|
else | | |
|
endif | | |
|
ret | make function return | ret |
|
$ | terminate input | |
|
a | abort | |
|
<other> | tcl command | echo $foo |
<flag> is taken from the set TF, IF, DF, OF, SF, ZF, PF, AF, CF and must be in upper-case.
The "scall" command has no effect on the current registers (not even for purposes of return values), while the "mcall" command changes whatever registers the function called modifies. See the "call" documentation for the format of <regs>.
|
GEOS SDK TechDocs
|
|
noStructEnum ...
|
patchin ...