Changes from previous releases
New in This Release
New in Purify 4.5
Operating system and Hardware
Purify has been tested with IRIX versions 6.2 and 6.5.
Compilers
Purify has been tested with the following compilers:
Debuggers
Threads
Purify supports these threads packages:
User Interface
! Ignore the NumLock and ScrollLock keys on ! mouse buttons Purify*ignoreModifierMask: Mod3|Mod2
This second workaround will take effect for a new Purify viewer after you restart your X-session or run a command like 'xrdb -merge $HOME/.Xdefaults'.
The site-wide URL for ClearQuest can be given during installation or set by manually editting the file
pure_clearquest_url
in your Purify home directory. A user can override the site-wide URL by setting the environment variable
PURE_CLEARQUEST_URL
This feature is partly implemented by a shell script, ("pure_invoke_clearquest" in your Purify home directory) to allow you to tailor its operation to your needs. If you wish, you may copy and customize this. script. As long as the directory containing the script appears in your search path before your Purify home directory, it will be used instead of the original script.
If you prefer to use Purify with ClearDDTS, you can do so by setting the X resource:
Purify*ddtsCommandString
to 'xddts', if xddts is in your search path, or to the full path to your xddts executable. xddts is invoked by a shell script ("pure_invoke_ddts" in your Purify home directory). If you wish to customize it, please read the section on customizing "pure_invoke_clearquest" above.
If you already have a customized "pure_invoke_ddts" script in your search path, All you need to do is set your X resource as described above, and Purify will find your customized script automatically.
The following copyright applies to portions of this ClearQuest integration code:
Copyright 1996 Netscape Communications Corporation, all rights reserved. Created: Jamie Zawinski <jwz@netscape.com>, 24-Dec-94. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. No representations are made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
Compilers
Purify'ing X Applications
To avoid this kind of problem, you should run your application on a different X server than the Purify UI or Purify stderr output, or you should use the -log-file= or -view-file= options to specify a file to capture messages for inspection after your application is finished.
A convenient way to debug on two displays is to pre-start the Purify Viewer on one display ("slave"), and then start the application on the other display ("master"):
% purify -display slave:0 -view a.out.X & % a.out.X -display master:0
The two commands must be executed on the same computer, but it could be the workstation associated with either display, or altogether another computer remote from both displays. The application will connect to the already started Purify Viewer, and messages will not conflict with the X display interactions of the application under test.
Debuggers
Threads
This is a bug in rld. SGI is releasing a patch (#3910) to correct the problem; please contact SGI Support to obtain the patch.
If the patch is not yet available from SGI, please contact Rational Support to obtain an an iterim, unofficial patch.
Note that your application may not use dlopen directly, but a library it is using may call dlopen. C++ exception handling may also call dlopen.
Processing /usr/lib/libc.so.1 -- error fatal: Jump registered out of no transformed block [SA906D8, SA90710] /usr/lib/libc.so.1
This is a bug in cord. libc.so is corded, but cord is not updating the notransform information in the shared library correctly.
This does not happen with Irix versions below 6.5.7, or with version on the maintenance stream (e.g. 6.5.7m).
Rational Support is working with SGI to make a patch available. Please contact Rational Support regarding availability of the patch.
Unsupported Features
Misleading Error Messages
#Error: (system) No such file or directory, write() failed [a.out]. In this case, you can see that you are out of disk space with "df .", and you should clean up or otherwise acquire more disk space.
-ignore-n32-o-umr=yes
or set the environment variable:
PURIFY_IGNORE_N32_O_UMR
Purify Swap Usage
A Purify'd application needs more swap space than the equivalent unpurify'd version. Running under a debugger, you will need even more. To
Do the following as root to add a 40MB swap file:
/usr/sbin/mkfile 40m /usr/swap Add this line to /etc/fstab: /usr/swap swap swap pri=3 0 0 Then execute: /etc/init.d/swap stop /etc/init.d/swap start
You may also allocate virtual swap to appease the debuggers swap requirements. Check the man page (man swapctl) for caveats.
Do the following as root:
vi /etc/config/vswap.options >change vswaplen to 250000 /sbin/chkconfig vswap on /etc/init.d/swap stop /etc/init.d/swap start
How do I use the API functions?
There are stubs for the Purify API functions in the files libpurify_stubs.so and libpurify_stubs.a. For the N32 ABI, the files are libpurify_stubs_n32.so and purify_stubs_n32.a. You use the .so during development, and the .a for shipping your product. If you link with the .a file, the Purify API functions will be stubbed out even if you subsequently Purify your program.
Manual Examples
The examples in Chapter 12 of the manual are intended to help the user understand the circumstances that would cause Purify to report what it reports. At least one example does not apply to Purify on IRIX.