PureCoverage(1) LICENSED SOFTWARE PureCoverage(1) NNNNAAAAMMMMEEEE purecov - detect untested portions of programs SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS ppppuuuurrrreeeeccccoooovvvv [----_o_p_t_i_o_n ...] $(CC) $(CFLAGS) -o _p_r_o_g_r_a_m $(OBJS) $(LIBS) ppppuuuurrrreeeeccccoooovvvv ----vvvviiiieeeewwww [_p_r_o_g_r_a_m_s....ppppccccvvvv] ppppuuuurrrreeeeccccoooovvvv ----eeeexxxxppppoooorrrrtttt[====_a_s_c_i_i._d_a_t_a] _p_r_o_g_r_a_m_s....ppppccccvvvv ppppuuuurrrreeeeccccoooovvvv ----mmmmeeeerrrrggggeeee====_m_e_r_g_e_d....ppppccccvvvv _p_r_o_g_r_a_m_s....ppppccccvvvv DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN PureCoverage detects unused portions of your program - places where more intensive testing is necessary to exercise the code. PureCoverage tracks coverage information across multiple runs of a program, and permits analysis of coverage for shared portions of multiple programs. PureCoverage includes an interactive Viewer for analysis of the coverage information, a merging tool for manipulating coverage data files, and an export tool for converting the data into an ASCII format suitable for further processing by scripts and other programs. PureCoverage also includes a variety of scripts for performing data analysis and manipu- lation, and also as examples for users wishing to write their own scripts. SSSSeeeettttttttiiiinnnngggg UUUUpppp PureCoverage is typically loaded from CD-ROM, and then installed using the ppppuuuurrrreeee____iiiinnnnssssttttaaaallllllll command. You will need a license certificate with a valid password; enter the infor- mation requested exactly as printed on the certificate. For more information, see the ``System Administrator's Guide.'' To use PureCoverage, create a symbolic link from where ppppuuuurrrreeeeccccoooovvvv is installed (_p_u_r_e_c_o_v_h_o_m_e////ppppuuuurrrreeeeccccoooovvvv) to ////uuuussssrrrr////llllooooccccaaaallll////bbbbiiiinnnn////ppppuuuurrrreeeeccccoooovvvv (or some other directory on each user's $$$$PPPPAAAATTTTHHHH): example% llllnnnn ----ssss _p_u_r_e_c_o_v_h_o_m_e////ppppuuuurrrreeeeccccoooovvvv ////uuuussssrrrr////llllooooccccaaaallll////bbbbiiiinnnn////ppppuuuurrrreeeeccccoooovvvv PureCoverage follows this symbolic link to find the other files it needs in the installation directory. Alterna- tively, add _p_u_r_e_c_o_v_h_o_m_e to each user's $$$$PPPPAAAATTTTHHHH. The PureCoverage scripts should also be made available using a similar process. The scripts normally reside in the directory _p_u_r_e_c_o_v_h_o_m_e////ssssccccrrrriiiippppttttssss. BBBBuuuuiiiillllddddiiiinnnngggg Add the word ppppuuuurrrreeeeccccoooovvvv to the beginning of the link line in your Makefile. For example: Printed 1/6/97 15 Jan 1996 1 PureCoverage(1) LICENSED SOFTWARE PureCoverage(1) _p_r_o_g_r_a_m: $(OBJS) ppppuuuurrrreeeeccccoooovvvv [----_o_p_t_i_o_n ...] $(CC) $(CFLAGS) -o _p_r_o_g_r_a_m \ $(OBJS) $(LIBS) PureCoverage modifies the object code at link time to pro- duce an equivalent program which has additional counting instructions built in. The ----_o_p_t_i_o_n_s specified on the command line are PureCoverage options to customize its operation. RRRRuuuunnnnnnnniiiinnnngggg The PureCoverage-instrumented program is run exactly as the original program. When the program finishes running, a file _p_r_o_g_r_a_m....ppppccccvvvv will be created or updated with the new coverage data. VVVViiiieeeewwwwiiiinnnngggg aaaannnndddd MMMMaaaannnniiiippppuuuullllaaaattttiiiinnnngggg DDDDaaaattttaaaa To invoke the Viewer on the resulting file, use the command: example% ppppuuuurrrreeeeccccoooovvvv ----vvvviiiieeeewwww [----_o_p_t_i_o_n ...] _p_r_o_g_r_a_m....ppppccccvvvv This displays the coverage data in the interactive Viewer. To convert a ....ppppccccvvvv file into an ASCII format for further pro- cessing, use the command: example% ppppuuuurrrreeeeccccoooovvvv ----eeeexxxxppppoooorrrrtttt[====_a_s_c_i_i._d_a_t_a] [----_o_p_t_i_o_n ...] \ _p_r_o_g_r_a_m....ppppccccvvvv This sends the output to a file named _a_s_c_i_i._d_a_t_a; if this filename is not supplied, output will be sent to the stan- dard output, which may then be redirected to another pro- gram. To combine several example% ppppuuuurrrreeeeccccoooovvvv ----mmmmeeeerrrrggggeeee====_m_e_r_g_e_d....ppppccccvvvv [----_o_p_t_i_o_n ...] \ _f_i_r_s_t....ppppccccvvvv _s_e_c_o_n_d....ppppccccvvvv ............ All three of these commands permit specification of multiple ....ppppccccvvvv files, not just ----mmmmeeeerrrrggggeeee. PPPPuuuurrrriiiiffffyyyy aaaannnndddd PPPPuuuurrrreeeeCCCCoooovvvveeeerrrraaaaggggeeee PureCoverage is designed to work with Purify to collect code coverage information at the same time as monitoring the code for access errors and memory leaks. To create a program instrumented by Purify and PureCoverage, use a command like: ppppuuuurrrriiiiffffyyyy [----_o_p_t_i_o_n ...] ppppuuuurrrreeeeccccoooovvvv [----_o_p_t_i_o_n ...] \ $(CC) $(CFLAGS) -o _p_r_o_g_r_a_m $(OBJS) $(LIBS) OOOOPPPPTTTTIIIIOOOONNNNSSSS Printed 1/6/97 15 Jan 1996 % PureCo3erage(1) LICENSED SOFTWARE PureCo3erage(1) PureCoverage's operation can be customized for your program. By specifying options either at program build-time or pro- gram run-time, you can affect where PureCoverage data goes and how the program is instrumented and linked. Each option is a word or phrase that begins with a hyphen, for example ----ccccoooouuuunnnnttttssss----ffffiiiilllleeee. PureCoverage ignores the case and any hyphens or underscores in the option name. The option ----ccccoooouuuunnnnttttssss----ffffiiiilllleeee is equivalent to ----CCCCOOOOUUUUNNNNTTTTSSSS____FFFFIIIILLLLEEEE and ----CCCCoooouuuunnnnttttssssFFFFiiiilllleeee. All options have default values. You may override these values using the assignment syntax: ----_o_p_t_i_o_n-_n_a_m_e[====[_v_a_l_u_e]] Note that no spaces are permitted on either side of the equals sign (=) if it is supplied. You may specify PureCoverage options: +o on the build-time link line; or +o in the environment variables $$$$PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS or $$$$PPPPUUUURRRREEEEOOOOPPPPTTTTIIIIOOOONNNNSSSS. LLLLiiiinnnnkkkk LLLLiiiinnnneeee OOOOppppttttiiiioooonnnnssss Options may be specified on the link line, e.g.: ppppuuuurrrreeeeccccoooovvvv ----ccccaaaacccchhhheeee----ddddiiiirrrr====$$$$((((HHHHOOOOMMMMEEEE))))////ppppccccaaaacccchhhheeee $(CC) ... Build-time options apply to the PureCoverage build command being run. Run-time options may also be specified on the link line. These are built into the executable and become the default values at run-time when the PureCoverage- instrumented executable is run. This is a convenient way to build a program with non-standard default values for certain options, for example: ppppuuuurrrreeeeccccoooovvvv ----ccccoooouuuunnnnttttssss----ffffiiiilllleeee====ccccoooouuuunnnnttttssss $(CC) ... EEEEnnnnvvvviiiirrrroooonnnnmmmmeeeennnntttt VVVVaaaarrrriiiiaaaabbbblllleeee OOOOppppttttiiiioooonnnnssss Any option may be specified in the environment variables $$$$PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS or $$$$PPPPUUUURRRREEEEOOOOPPPPTTTTIIIIOOOONNNNSSSS. Note: Values in $$$$PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS have precedence over values from $$$$PPPPUUUURRRREEEEOOOOPPPPTTTTIIIIOOOONNNNSSSS. Build-time options specified in environment variables are applied when applications are built. Options specified explicitly on the build-time link line override environmen- tal values. Run-time options specified in environment variables are Printed 1/6/97 15 Jan 1996 % PureCo4erage(1) LICENSED SOFTWARE PureCo4erage(1) applied when PureCoverage-instrumented applications are run. The environmental values in force when the program is run override any defaults specified on the link line when the application was built. Note: If an option is specified more than once in an environment variable, the first value is used. To add an overriding value for the ----lllloooogggg----ffffiiiilllleeee option, for example, without changing other options specified, use a command like: csh% sssseeeetttteeeennnnvvvv PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS """"----lllloooogggg----ffffiiiilllleeee====nnnneeeewwww $$$$PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS"""" ksh$ eeeexxxxppppoooorrrrtttt PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS====""""----lllloooogggg----ffffiiiilllleeee====nnnneeeewwww $$$$PPPPUUUURRRREEEECCCCOOOOVVVVOOOOPPPPTTTTIIIIOOOONNNNSSSS"""" OOOOPPPPTTTTIIIIOOOONNNN TTTTYYYYPPPPEEEE DDDDEEEEFFFFAAAAUUUULLLLTTTT CCCCaaaacccchhhhiiiinnnngggg OOOOppppttttiiiioooonnnnssss ((((bbbbuuuuiiiilllldddd----ttttiiiimmmmeeee ooooppppttttiiiioooonnnnssss)))) ----ccccaaaacccchhhheeee----ddddiiiirrrr ddddiiiirrrreeeeccccttttoooorrrryyyy _p_u_r_e_c_o_v_h_o_m_e////ccccaaaacccchhhheeee This option sets the global directory where PureCoverage- instrumented versions of libraries will be cached. ----aaaallllwwwwaaaayyyyssss----uuuusssseeee----ccccaaaacccchhhheeee----ddddiiiirrrr bbbboooooooollll nnnnoooo This option forces all PureCoverage-instrumented versions of libraries to be written to the global cache directory. When you use the default value, PureCoverage caches to the origi- nal library's directory, if it is writable. If the direc- tory is not writable, PureCoverage caches it to the value of ----ccccaaaacccchhhheeee----ddddiiiirrrr. LLLLiiiinnnnkkkkeeeerrrr OOOOppppttttiiiioooonnnnssss ((((bbbbuuuuiiiilllldddd----ttttiiiimmmmeeee ooooppppttttiiiioooonnnnssss)))) ----lllliiiinnnnkkkkeeeerrrr pppprrrrooooggggrrrraaaammmm----nnnnaaaammmmeeee ////bbbbiiiinnnn////lllldddd This option specifies the name of the linker that PureCoverage should invoke to produce the executable. LLLLooooggggffffiiiilllleeee OOOOppppttttiiiioooonnnnssss ----lllloooogggg----ffffiiiilllleeee ffffiiiilllleeeennnnaaaammmmeeee ssssttttddddeeeerrrrrrrr This option specifies the name of the logfile for PureCoverage messages. Normally, PureCoverage routes its report to the standard error stream. The filename may include one or more of these special keywords: +o %%%%pppp is replaced by the process id; +o %%%%vvvv is replaced by the program name; and Printed 1/6/97 15 Jan 1996 % PureCo5erage(1) LICENSED SOFTWARE PureCo5erage(1) +o %%%%VVVV is replaced by the full pathname of the program. These keywords are useful when you fork many PureCoverage- instrumented programs and want separate logfiles for each one. ----aaaappppppppeeeennnndddd----llllooooggggffffiiiilllleeee bbbboooooooollll nnnnoooo This option enables PureCoverage output to be appended to the current logfile rather than replacing it. FFFFiiiilllleeeennnnaaaammmmeeee OOOOppppttttiiiioooonnnnssss ----aaaauuuuttttoooo----mmmmoooouuuunnnntttt----pppprrrreeeeffffiiiixxxx ddddiiiirrrreeeeccccttttoooorrrryyyy ////ttttmmmmpppp____mmmmnnnntttt This option is used to specify the directory prefix used by the file system auto-mounter, usually ////ttttmmmmpppp____mmmmnnnntttt, to mount remote file systems in NFS environments. Use this option to strip the prefix, if present, to improve the readability of source filenames in PureCoverage reports. ----ccccoooouuuunnnnttttssss----ffffiiiilllleeee ffffiiiilllleeeennnnaaaammmmeeee _p_r_o_g_r_a_m....ppppccccvvvv This option specifies where the resulting coverage data will be written when the program exits. The filename may include one or more of these special keywords: +o %%%%pppp is replaced by the process id; +o %%%%vvvv is replaced by the program name; and +o %%%%VVVV is replaced by the full pathname of the program. If the specified file already exists, the resulting coverage data will be combined with the coverage data already present in the file. ----pppprrrrooooggggrrrraaaammmm----nnnnaaaammmmeeee pppprrrrooooggggrrrraaaammmm nnnnaaaammmmeeee aaaarrrrggggvvvv[[[[0000]]]] This option specifies the full pathname of the PureCoverage-instrumented program if aaaarrrrggggvvvv[[[[0000]]]] contains an undesirable or incorrect value. This can happen if you change aaaarrrrggggvvvv[[[[0000]]]] in your program, or if your program is invoked by an eeeexxxxeeeecccc(((()))) call whose path differs from the argu- ment it passes as aaaarrrrggggvvvv[[[[0000]]]] to your program. In such cases, PureCoverage can not find the program file, and therefore can not interpret addresses as function names. You may need to use this option if you find little or no symbolic information in the reports from your PureCoverage- Printed 1/6/97 15 Jan 1996 % PureCo6erage(1) LICENSED SOFTWARE PureCo6erage(1) instrumented program. ----uuuusssseeeerrrr----ppppaaaatttthhhh ddddiiiirrrr lllliiiisssstttt nnnnoooonnnneeee This option specifies a colon-separated list of directories in which to search to find programs and source code. For example, if you have a source tree in your home directory but you also link with GNU source code, you could use: ----uuuusssseeeerrrr----ppppaaaatttthhhh====////uuuussssrrrr////hhhhoooommmmeeee////cccchhhhrrrriiiissss////ssssrrrrcccc::::////uuuussssrrrr////llllooooccccaaaallll////ggggnnnnuuuu////ssssrrrrcccc PureCoverage searches for the executable file from which to read the symbol table in your $PATH, and then in directories listed in ----uuuusssseeeerrrr----ppppaaaatttthhhh. See also ----pppprrrrooooggggrrrraaaammmm----nnnnaaaammmmeeee. AAAAddddddddiiiittttiiiioooonnnnaaaallll OOOOppppttttiiiioooonnnnssss ----ffffoooorrrrcccceeee----mmmmeeeerrrrggggeeee bbbboooooooollll nnnnoooo Normally, PureCoverage accumulates data for a given file across multiple executions of the programs using that file. After that file is recompiled, the old data will be disre- garded and replaced with new data when the program next runs. This ensures that coverage data is always accurate with respect to the latest version of each source file. In certain circumstances, it may be desirable to override this behavior. A typical situation is when a single source file is conditionally compiled with slight differences for use in two different programs. If you try to merge the cov- erage data for these two programs, PureCoverage will report that one of them is out of date relative to the other and discard the ``old'' data. The ----ffffoooorrrrcccceeee----mmmmeeeerrrrggggeeee====yyyyeeeessss option will cause PureCoverage to com- bine the data regardless of the timestamps stored in the data. Care must be exercised in using this option to ensure that data may be meaningfully combined. ----hhhhaaaannnnddddlllleeee----ssssiiiiggggnnnnaaaallllssss ssssiiiiggggnnnnaaaallll lllliiiisssstttt nnnnoooonnnneeee ----iiiiggggnnnnoooorrrreeee----ssssiiiiggggnnnnaaaallllssss ssssiiiiggggnnnnaaaallll lllliiiisssstttt ssssyyyysssstttteeeemmmm ddddeeeeppppeeeennnnddddeeeennnntttt PureCoverage installs a signal handler for many of the pos- sible software signals which may be delivered to an instru- mented process, to print an informative message and save coverage data to the ....ppppccccvvvv file when the process crashes. The option value specifies which signals are reported and cause data to be saved. It is a comma-delimited list of signal names. The default value of ----iiiiggggnnnnoooorrrreeee----ssssiiiiggggnnnnaaaallllssss is sys- tem dependent. The defaults are: Printed 1/6/97 15 Jan 1996 % PureCo7erage(1) LICENSED SOFTWARE PureCo7erage(1) +o SunOS 4.1.x: SIGHUP,SIGINT,SIGQUIT,SIGILL,SIGTRAP,SIGIOT,SIGABRT, SIGEMT,SIGFPE,SIGKILL,SIGBUS,SIGSEGV,SIGSYS,SIGPIPE, SIGTERM,SIGXCPU,SIGXFSZ,SIGLOST,SIGUSR1,SIGUSR2 +o Solaris 2.x: SIGHUP,SIGINT,SIGQUIT,SIGILL,SIGTRAP,SIGIOT,SIGABRT, SIGEMT,SIGFPE,SIGKILL,SIGBUS,SIGSEGV,SIGSYS,SIGPIPE, SIGTERM,SIGUSR1,SIGUSR2,SIGPOLL,SIGXCPU,SIGXFSZ, SIGFREEZE,SIGTHAW,SIGRTMIN,SIGRTMAX +o HP-UX: SIGHUP,SIGINT,SIGQUIT,SIGILL,SIGTRAP,SIGABRT,SIGEMT, SIGFPE,SIGKILL,SIGBUS,SIGSEGV,SIGSYS,SIGPIPE,SIGTERM, SIGUSR1,SIGUSR2,SIGLOST,SIGRESERVE,SIGDIL For instance, if you want PureCoverage to save data on the non-fatal signals SIGALRM and SIGVTALRM, use: ----hhhhaaaannnnddddlllleeee----ssssiiiiggggnnnnaaaallllssss====SSSSIIIIGGGGAAAALLLLRRRRMMMM,,,,SSSSIIIIGGGGVVVVTTTTAAAALLLLRRRRMMMM If you do not want PureCoverage to save data on the fatal signal SIGSEGV because your program handles it, use: ----iiiiggggnnnnoooorrrreeee----ssssiiiiggggnnnnaaaallllssss====SSSSIIIIGGGGSSSSEEEEGGGGVVVV Note: PureCoverage does not ever handle SIGSTOP, SIGKILL, and SIGTRAP signals, since doing so interferes with debuggers and PureCoverage's own operation. See the man pages for ssssiiiiggggnnnnaaaallll(((()))) and ssssiiiiggggmmmmaaaasssskkkk(((()))), and the files ////uuuussssrrrr////iiiinnnncccclllluuuuddddeeee////ssssiiiiggggnnnnaaaallll....hhhh and ////uuuussssrrrr////iiiinnnncccclllluuuuddddeeee////ssssyyyyssss////ssssiiiiggggnnnnaaaallll....hhhh for more information on signals. AAAAPPPPPPPPLLLLIIIICCCCAAAATTTTIIIIOOOONNNN PPPPRRRROOOOGGGGRRRRAAAAMMMMMMMMIIIINNNNGGGG IIIINNNNTTTTEEEERRRRFFFFAAAACCCCEEEE PureCoverage's application programming interface can be used by programs as necessary and in interactive debugging environments like dbx, gdb, and xdb. iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____iiiissss____rrrruuuunnnnnnnniiiinnnngggg(((()))) This function returns 1 if the executable has been instru- mented with PureCoverage, 0 otherwise. This function may be used to enclose special purpose application code to execute in the PureCoverage-instrumented environment. For example: iiiiffff ((((ppppuuuurrrreeeeccccoooovvvv____iiiissss____rrrruuuunnnnnnnniiiinnnngggg(((()))))))) {{{{ iiiinnnnssssttttaaaallllllll____gggguuuuiiii____ccccoooovvvveeeerrrraaaaggggeeee____rrrreeeesssseeeetttt____bbbbuuuuttttttttoooonnnn(((())));;;; }}}} Printed 1/6/97 15 Jan 1996 % PureCo8erage(1) LICENSED SOFTWARE PureCo8erage(1) iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____ssssaaaavvvveeee____ddddaaaattttaaaa(((()))) This function causes coverage data to be saved immediately. Counts are then reset to zero, to avoid double counting. iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____cccclllleeeeaaaarrrr____ddddaaaattttaaaa(((()))) This function causes the coverage data to be reset to zero, discarding collected data. iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____sssseeeetttt____ffffiiiilllleeeennnnaaaammmmeeee((((ccccoooonnnnsssstttt cccchhhhaaaarrrr**** _f_i_l_e_n_a_m_e)))) This function specifies that coverage counts should be saved to _f_i_l_e_n_a_m_e. Embedded %%%%pppp, %%%%vvvv, and %%%%VVVV are turned into the program process id, the program name, and the full pathname of the program, respectively. iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____eeeennnnaaaabbbblllleeee____ssssaaaavvvveeee(((()))) iiiinnnntttt ppppuuuurrrreeeeccccoooovvvv____ddddiiiissssaaaabbbblllleeee____ssssaaaavvvveeee(((()))) These functions are used to enable or disable the automatic saving of coverage data at program exit. FFFFIIIILLLLEEEESSSS ****____ppppuuuurrrreeee____**** Cached object and library files translated by PureCoverage. _p_u_r_e_c_o_v_h_o_m_e////ccccaaaacccchhhheeee////............ Central cache directory structure for caching translated object files and libraries when they cannot be written alongside the original files. ....ppppuuuurrrreeee, ....lllloooocccckkkk....**** Locking files preventing simultaneous file access by more than one user. ....ppppuuuurrrreeeeccccoooovvvv, ....ppppuuuurrrreeeeccccoooovvvv....ssssuuuunnnnoooossss4444, ....ppppuuuurrrreeeeccccoooovvvv....ssssoooollllaaaarrrriiiissss2222, ....ppppuuuurrrreeeeccccoooovvvv....hhhhppppuuuuxxxx Used to specify exclude directives to ignore coverage in uninteresting libraries. _p_u_r_e_c_o_v_h_o_m_e////PPPPuuuurrrreeeeCCCCoooovvvveeeerrrraaaaggggeeee....ppppuuuurrrreeeellllaaaa Contains passwords and a list of regular users for use by the Pure License Advisor. _p_u_r_e_c_o_v_h_o_m_e////ppppuuuurrrreeeeccccoooovvvv....hhhh Include file to use with PureCoverage API. _p_u_r_e_c_o_v_h_o_m_e////ppppuuuurrrreeeeccccoooovvvv____ssssttttuuuubbbbssss....aaaa Library to be included to provide dummy PureCoverage API function definitions for use when not linking under PureCoverage. Printed 1/6/97 15 Jan 1996 % PureCo9erage(1) LICENSED SOFTWARE PureCo9erage(1) _p_u_r_e_c_o_v_h_o_m_e////PPPPuuuurrrreeeeCCCCoooovvvveeeerrrraaaaggggeeee....XXXXRRRReeeessssoooouuuurrrrcccceeeessss Default X resource values. SSSSEEEEEEEE AAAALLLLSSSSOOOO ppppuuuurrrriiiiffffyyyy((((1111)))), ddddbbbbxxxx((((1111)))), ggggddddbbbb((((1111)))), ppppcccc____aaaannnnnnnnoooottttaaaatttteeee((((1111)))), ppppcccc____bbbbeeeelllloooowwww((((1111)))), ppppcccc____ddddiiiiffffffff((((1111)))), ppppcccc____eeeemmmmaaaaiiiillll((((1111)))), ppppcccc____sssssssshhhheeeeeeeetttt((((1111)))), ppppcccc____ssssuuuummmmmmmmaaaarrrryyyy((((1111)))) CCCCAAAAVVVVEEEEAAAATTTTSSSS A PureCoverage-instrumented program normally runs about 2 times slower, and takes about 10% more memory, than if not processed by PureCoverage. Occasionally the additional memory required will cause the paging behavior to degrade performance to a greater degree. In this case, running the PureCoverage-instrumented program on a machine with more memory would be advantageous. Programs instrumented on one version of Solaris may crash or generate incorrect results if run on a different version of the operating system. A PureCoverage-instrumented program can, because of its dif- ferent memory usage patterns, cause code that works by accident to behave slightly differently. For example, values read from uninitialized or unallocated locations can differ with and without PureCoverage. You can use Purify to detect such code. PureCoverage will not change the behavior of your code in any other way. If PureCoverage does change the behavior of the program (except as mentioned above), or produces incorrect coverage reports, please report such bugs to the appropriate address: Contact us in the US at: support@pure.com or (408) 720 1600 In Europe: support@europe.pure.com or (+31) 2356 94310 In Japan: support@japan.pure.com or (03) 3863 9283 Printed 1/6/97 15 Jan 1996 %