This specifically explains how to produce an ascii file, when:
- There is no core file dumped, or
- adb/sdb fails.
When Progress generates the following error messages, it means that the UNIX kernel intercepted a system error, and is unable to continue.
- SYSTEM ERROR: Bus error. (48)
- SYSTEM ERROR: Memory violation. (49)
If a core file is produced, use
adb or
sdb to obtain a stack trace.
In some cases however, the core file cannot be analyzed by
adb / sdb debuggers, or no core file is actually produced. In these cases, other tools can be employed to obtain this information. The commonly used tool is called the
dbx module, which is a database abstraction layer (db 'X', where 'X' is a supported database) implemented in C. It may be used on most UNIX platforms. The following provides examples of how to use this tool, using the "tee" utility to store the display information in a file, called "trace.txt".
Important commands for the dbx tool:Command Description
------- -----------------------------------------------
cont Continue execution
where Gives a stack trace, i.e. all internal functions called to this point in the program
quit Quit dbx toolTo get the PID for the executable:For reproducible cases, start the process with "&" to see the pid displayed: .
Example:
$ DLC/bin/_mpro -zp &Returns : The id of this process is 12345. (1408)
Otherwise, get the PID from the kernel with the "ps -aef" utility:
Example: ps -aef | grep _mprosrv
Returns : 12345 as the PID
Start DBXUsing the -a Option to attach to the process through it's PID and echo output to the trace.txt file:
$ dbx -a 12345 | tee trace.txt
Continue the process entering:
cont
At this stage, focus should have been given back to the process.
When the error occurs, the process will return back to the dbx tool.
To get a stack trace, type:
where
To quit dbx, type:
quit
The resulting "trace.txt" file can then be sent to Progress Software Technical Support for further analysis.
For the DG & SUN platforms, the commands are a little bit different:
Startup: dbx | tee trace.txt
Attach: debug <module> <pid>
Process: cont
Trace: where
Stop: quit
On a Sun platform, you have to type "Ctrl-C" to get back into the dbx tool, but otherwise it works similar.
Please refer to dbx documentation on your own system.