Messages are printed to standard error, when problems are detected (normally standard is rerouted to the DDS print file). Nominal processing can also be monitored. The contents of each trace read or written can be printed. The real names of temporary files can be printed, and their contents preserved for inspection.
The end user can define
dds_debug= keywords
to control this feature. Recognized values are shown below. Keyword groups are mutually exclusive. The keyword read (or write) may be added to limit the dump to input (or output) traces.
keyword description ---------------- -------------------------------------- diff only field changes diff0 lower level changes diff1 same as "diff" diff2 secondary sort changes max set diff dump limit (default 30) list "f1 f2 ..." dump selected headers usp dump set subset of usp headers segy dump set subset of segy headers -verbose turn off verbose mode (on by default) -debug turn off debug print (on by default) +tmp save tmp files (off by default) read dump on read only write dump on write only seek dump on seek only dbg_heap check memory on each allocation & free dbg_alloc check memory on each allocation dbg_free check memory on each free dbg_call check memory on each API call dbg_trace trace all API calls dbg_scanner trace compiler scanner dbg_uncompile dump uncompile stacks dbg_symbol dump binary symbol tables dbg_binary dump binary dbg_panic dump binary tables on panic dbg_all dump all
If "dds_debug= buf 8
" is defined, all fields in all
traces are printed. Vector field dumps are limited to 8 elements.
This prints a lot of (unwanted) information.
If "dds_debug= read diff
" is defined, only input
traces are printed. By default, vector field dumps are limited to 30
elements. The name and value of all fields in the first trace are
printed. After the first, fields are printed only if they differ
from the previous trace. This makes interesting information more
visible, by eliminating clutter from constant fields. The end user
can replace uncertainty with knowledge, when faced with new data.
Hint: If only the dump is wanted, define
"out_data= /dev/null
" to dispose of binary data.
If the read
keyword is eliminated, both input and
output traces are printed. This can be used to quality control
field mapping from one format to another. An input trace is
displayed, followed by the corresponding output trace. Some
applications may dump traces by ensemble (records, or 2D planes).
If diff2
is used, more clutter is eliminated.
Traces are compared to two previous values. Constant fields are
printed, only if they start changing. Varying fields are printed,
only if they become constant. This technique highlights field
changes at secondary sort (record) boundaries. All fields are
printed from the first two traces, to provide a reference point.
The list
keyword is used to select fields for
a tabular dump. Selected fields are printed on one line for each
trace. Only the first value from a vector field is displayed.
The keywords, usp
and segy
,
are predefined lists. If multiple standards are requested,
a compromise is made to limit print line width. For example:
dds_debug= usp comment= "usp", as an explicit list dds_debug= list "RecNum TrcNum RecInd DphInd SrcLoc SoPtNm SrcPnt LinInd DstSgn StaCor"
Standard error will scroll off the screen, unless redirected. Redirection syntax is dependent upon the Unix shell. These examples assume the C shell is used to execute bridge.
bridge par= file >& log bridge par= file |& more bridge par= file |& xcat bridge par= file |& tee log (bridge par= file | cmd2 ...) |& tee log
Hint: ctrl-c can be used to interrupt execution, after sufficient data is printed.
These examples assume the Bourne shell is used.
bridge par= file 2> log bridge par= file 2>&1 | more bridge par= file 2>&1 | xcat bridge par= file 2>&1 | tee log (bridge par= file | cmd2 ...) 2>&1 | tee log
Also see Runtime Control for enbaling debug features.