HP gnu source-level debugger 5992-4701 manual An overview of range checking

Models: gnu source-level debugger 5992-4701

1 369
Download 369 pages 58.54 Kb
Page 104
Image 104

error 1 + 2.3

The second example fails because the CARDINAL 1 is not type-compatible with the REAL 2.3.

For the expressions you use in GDB commands, you can tell the GDB type checker to skip checking; to treat any mismatches as errors and abandon the expression; or to only issue warnings when type mismatches occur, and evaluate the expression anyway.

When you choose the last of these, GDB evaluates expressions like the second example above, but also issues a warning.

Even if you turn type checking off, there may be other reasons related to type that prevent GDB from evaluating an expression. For instance, GDB does not know how to add an int and a struct foo. These particular type errors have nothing to do with the language in use, and usually arise from expressions, such as the one described above, which make little sense to evaluate anyway.

Each language defines to what degree it is strict about type. For instance C requires the arguments to arithmetical operators to be numbers. In C, enumerated types and pointers can be represented as numbers, so that they are valid arguments to mathematical operators. See “Supported languages” (page 105), for further details on specific languages.

GDB provides some additional commands for controlling the type checker:

set check type auto

Set type checking on or off based on the current working

 

language. See “Supported languages” (page 105), for the

 

default settings for each language.

set check type on, set

Set type checking on or off, overriding the default setting

check type off

for the current working language. Issue a warning if the

 

setting does not match the language default. If any type

 

mismatches occur in evaluating an expression while type

 

checking is on, GDB prints a message and aborts

 

evaluation of the expression.

set check type warn

Cause the type checker to issue warnings, but to always

 

attempt to evaluate the expression. Evaluating the

 

expression may still be impossible for other reasons. For

 

example, GDB cannot add numbers and structures.

show type

Show the current setting of the type checker, and

 

whether or not GDB is setting it automatically.

9.3.2 An overview of range checking

In some languages it is an error to exceed the bounds of a type; this is enforced with run-time checks. Such range checking is meant to ensure program correctness by making sure computations do not overflow, or indices on an array element access do not exceed the bounds of the array.

104 Using GDB with Different Languages

Page 104
Image 104
HP gnu source-level debugger 5992-4701 manual An overview of range checking