[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Error message overview
------------------------------------------------------------------------------
The following sections contain a complete list of the Blinker error messages
with a description of each error and reasons for their occurrence.
The errors are divided into the following classes:
. 10xx - Link time warning messages
. 11xx - Link time fatal messages
. 12xx - DOS real mode runtime messages
. 13xx - DOS protected mode runtime messages
DOS Errorlevel
Link time warning messages are for information only, and do not set the DOS
ERRORLEVEL, so the execution of Blinker and any MAKE utilities being used
will continue unaffected. These warning messages may be disabled altogether
using the BLINKER MESSAGE NOWARNING command.
Link time fatal messages and runtime messages, on the other hand, are of a
more serious nature. They cause immediate termination of program execution,
and set the DOS ERRORLEVEL to 1.
Blinker's Error Handler
At runtime when a program linked with Blinker encounters an error condition,
it passes an error number to the Blinker error handler module. This routine
supplies the text for the message which is to be displayed. The error
handler is automatically included by Blinker in the .EXE in the course of
linking.
The source for the Blinker error handler has been supplied on the Blinker
distribution diskette in a number of languages, so the text of the Blinker
error messages can be modified.
If you modify the Blinker error handler, you must then compile it and link
it as a FILE into the root of the program. If you do not modify it, there is
no need to compile it or include it in the link script. It will be
automatically included into the .EXE by Blinker.
Care should be taken when overlaying the error handler in the case of the
potential error 1201: "cannot find overlay file in the current path". This
can cause an endless loop when the Blinker overlay manager cannot find an
overlay file, tries to load the error handler, cannot find the overlay file
containing the Blinker error handler, and again tries to load the error
handler.
The developer may wish to handle this particular error in a different way to
avoid this problem, or may just ensure that the overlay file can be found,
e.g. by making it an internal overlay.
Note for CA-Clipper:
The error handler sets up the appropriate error message for the error number
returned by the function BLIERRNUM(), in some cases using the function
BLIERRPRM() to obtain the name of the offending item. In the case of
CA-Clipper Summer '87 it then calls MISC_ERROR with a procedure name of
BLINKER, a line number which is the error number, and the appropriate error
message. In the case of CA-Clipper 5.x it creates a new error object which
is passed as the argument to the CA-Clipper default error handler block.
Approaches to Debugging
Usually link time errors are well identified and the approach to their
resolution is given in the individual error message descriptions in the
following section. Some additional techniques for discerning link time
problems include using:
. The VERBOSE link script command, to see what Blinker is doing when an
error occurs.
. The MAP command, to see how an .EXE has been constructed.
. The ECHO command, to output your own messages from within the link
script.
. The command(s) BLINKER LINK EMS/XMS OFF, which disable the use of
non-conventional memory at link time.
Runtime error conditions which arise from the linking process can be more
difficult to diagnose and resolve.
The two most common link time mistakes which can lead to runtime errors are:
(1) overlaying something which should not be overlaid, and (2) including the
wrong module of two or more like-named modules. Both of these can lead to a
variety of runtime symptoms which include, but are not limited to,
corruption of variables or memory, inappropriate characters displayed to the
terminal, a memory manager exception, and system lockups.
When encountering any such problems which do not appear to be attributable
to the code itself or to other factors in the environment, the following
steps are suggested in analyzing the linker's role in the problem.
1. Ensure that the program stack is sufficiently large using the STACK or
BLINKER PROCEDURE DEPTH commands.
2. Verify that everything in the overlay area is reliably overlayable by (a)
checking Blinker's 3RDPARTY.DOC file, (b) checking the documentation for
each third party product for their recommended method for dynamic
overlaying, and (c) if the problem is reproducible, removing all suspected
files and libraries from the overlay area and testing the program after each
is systematically reinserted.
3. Check for duplicate modules using the BLINKER MESSAGE DUPLICATES command.
See Chapter 9 for the definition of this command. Usually this situation can
be resolved by altering the order of the libraries and, if necessary, using
the MODULE FROM command.
4. Test for non-conventional memory conflicts, using BLINKMEM.EXE, which is
included with Blinker, and disable Blinker's runtime use of nonconventional
memory either in the link script or via the BLINKER environment variable.
5. Perform a worst-case test of Blinker's overlaying process by using the
MURPHY link-script command. For details on using this command, please see
the appropriate section in Chapter 5, 7 and 9.
6. Attempt to isolate a small portion of the program which produces the
error.
7. Attempt to test the program with another linker. If the problem does not
occur, retry Blinker with the same overlays and order of libraries as the
other linker.
8. Contact Blinker technical support. The technical bulletin section on our
BBS and our FastFax retrieval system have our latest technical reports.
Please refer to these before sending a BBS message or calling our technical
support line. Also, review this manual for additional information,
particularly the details in Chapters 3, 4, 7, and 9. If you should call,
please have your Blinker serial number and link script files at hand.
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson