home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
300-399
/
ff369.lzh
/
Spy
/
Instructions
< prev
next >
Wrap
Text File
|
1990-08-15
|
10KB
|
277 lines
==========================================================================
********* ********* * *
* * * * *
* * * * *
********* ********* *********
* * *
* * *
********* * *
Version 1.0
by Federico Giannici
==========================================================================
This program is a SPY of the main AmigaDOS and EXEC functions.
SPY is a Public Domain program and you can copy and utilize it freely. You
don't have to pay to me anything (every monetary contributions, however,
will be well accepted) but you can't modify, sell or incorporate it in any
commercial program without my written authorization. Again, I am not
responsible for any damage, direct or indirect, derived by the utilization
of SPY.
WHAT SPY DOES
---------------
You can choose which functions (among those implemented) to keep under
observation. After that, every single call to those functions will be
reported on the screen.
Names, parameters and the results of the functions are displayed.
Names are shown in a different ink color.
Besides, SPY often shows, between parenthesis, the name of the structure
whose address had been passed as a parameter, for example: Devices,
Library, Resources, etc.. If the structure is a Lock, SPY shows (again
between parenthesis) the name of the file or of the directory (ending with
a "/" sign) completed with all the path corresponding to the lock.
When SPY has to show a FileHandle it will display the name of the file used
in the "Open()" function corresponding to that FileHandle. I have not found
a documented way to go back to the filename corresponding to a FileHandle.
As a partial solution, every time SPY intercepts a call to the "Open()"
function, it memorize the filename corresponding to that FileHandle.
Then, when SPY intercepts a call to the "Close()" function it deletes the
filename corresponding to that FileHandle.
Therefore SPY cannot show neither the name of the files opened before it
was loaded, neither the name of the file opened when the "Open()" function
was not under observation.
As far as concern the FileHandles obtained with the "Input()" and
"Output()" functions, SPY will show respectively the names "<Input>" and
"<Output>".
Obviously, if the "Close()" function is not intercepted, the buffer of the
filenames will grow with no end, and SPY could show incorrect filenames.
Therefore you can clear the buffer with the command "Clear FileHandle mem"
in the first menu.
Obviously it is a makeshift solution. I'll thank everybody suggest me a
better solution.
In the "Read()" and "Write()" functions, SPY display also the content of
the buffer (readed or written) as an ASCII string.
LOADING
---------
SPY can be loaded either from CLI or Workbench.
From CLI, you can specify, as a parameter, the name of the configuration
file, otherwise SPY will search the default configuration file
"spy.config".
SPY searchs the configuration file, first in the current directory, then,
if he didn't found it, in the "S:" directory.
If SPY couldn't find the configuration file anywhere, it will use the
default configuration: interception activated, printer de-activated, all
the Preferences options activated and all the functions, but "FindName()",
selected.
THE MENUS
-----------
GENERAL
ACTIVATED
When selected (selection symbol on the left), it makes SPY active.
PRINTER
When selected, everything shown on the screen is sent to the printer too.
IT IS VERY IMPORTANT that the printer is really ON! Otherwise, SPY could
stall (stop forever) or, if the "Printer Troubles - Check Printer and
Cables" message appears, all the system could crash (if SPY is currently
trapping some particular functions).
FUNCTIONS
You can also select this command, in an easier way, with a double click in
the main window of SPY.
It brings up the window for the selection of the functions intercepted by
SPY. The active functions are those marked with the selection symbol on the
left side.
Five commands are selectable on the bottom side of this window:
OK: Accepts the list of the activated functions actually
displayed on the screen.
ALL: Selects all the functions. There is a single exception:
"FindName()", because it usually generates a large number of
calls (for example, every time a menu is used), so you have
to select it expressly by clicking above it.
NONE: De-selects the functions all them all.
RESTORE: Restores the list of the selected functions as they
were the last time.
CANCEL: Closes the window without modifying the list of the
selected functions (the last one will be used).
SAVE CONFIGURATION
You will be asked for the name of the configuration file.
The configuration includes all the menu options, the list of selected
functions as well as the position and dimension of the window.
LOAD CONFIGURATION
You will be asked for the name of the configuration file to be used.
CLEAR FILEHANDLE MEM
It deletes the buffer of the FileHandles names (see "WHAT SPY DOES").
INFORMATIONS
It shows a sub-menu of informations about both the program and the
programmer (me!).
QUIT
It quits SPY.
You can obtain it also with the close-window gadget on the main SPY window.
Before quitting, SPY checks that no other program is executing any of his
functions.
PREFERENCES
These options define SPY's behaviour when it intercepts a call to any of
the currently selected functions.
DESCRIPTION
If set on "Verbose", SPY will display all the parameters and the return
value of the function.
If set on "Brief", SPY will display, in a single line, only function name
and the main parameter.
ACTIVATION
If set on "Failed only", SPY will display only the failed function calls.
Otherwise, It will display all the intercepted function calls.
GO ON
If set on "Wait for GO", SPY will wait until you give your permission to go
ahead with the next intercepted function.
The gadget on the bottom of the main window will start to flash and you
will be able to give the OK either by clicking on the gedget itself or by
pressing any key (in this case the main SPY window has to be the active
one).
If set on "Immediately", SPY will not wait any permission and will proceed
in its work.
SCREENFLASH
If set on "Activated", and if SPY is "waiting for a GO" by the user (see
last section), all the screens will flash every two seconds
(approximately), in order to remember to the user that SPY is waiting for
him (meanwhile the calling program will be blocked).
MISCELLANEA
-------------
The "AllocMem()" function is notified only when an error occurr
(insufficient memory). This is because this function is called too often by
the system.
In two cases SPY cannot wait for a GO (otherwise the system will crash):
I) When a MsgPort named "IDCMP" is added to the system by
the "AddPort()" function (a window is opened).
II) When the input.device makes a call to the "FindName()"
function.
In order to avoid stack overflow problems, SPY shows only the calls made by
Tasks with a stack of 1600 bytes at least.
This, of course, does not eliminate the overflow problems completely,
because SPY don't know how much full is the stack.
If a crash occurs, try to eliminate some function traps.
The choise of 1600 bytes isn't a casual one. In fact, the initial CLI has a
1600 bytes stack (at least in the Operating System V1.2 and V1.3), even if
when the CLI has to execute a command its stack became (!?) of 4000 bytes.
Anyone of you can tell me why?
Some other strange behavior of the CLI (discovered with SPY):
When the CLI has to execute a command, it opens the dos.library (probably
to get the DOSBase address), but it don't close it by the "CloseLibrary()"
function. However the counter of openings of the library is decremented,
probably by the CLI itself.
The calls made by the CLI commands (Dir, CD, Delete, etc.) aren't
intercepted. I think this is due to the fact that this commands use an own
internal library that call directly the system functions, without passing
through the jump-table of the libraries.
FINAL NOTE
------------
For any suggestion, criticism, bug reporting, contribution and, most of
all, praises you can contact me at the address shown in the Informations
sub-menu of SPY (and at the end of these instructions). You can also
contact me on the Italian BBS Mc-Link (06-4180440), my code is MC4080.
Good investigations with SPY.
Federico Giannici
Viale Francia 4
90146 Palermo
Italy