uncover(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

uncover(1)

uncover(1)                       User Commands                      uncover(1)

NAME
       uncover - Code Coverage Tool

SYNOPSIS
       Instrumentation Step :
       uncover
            [-?]  [-h] [-c] [-d dir] [-m {on | off}]
            [-o output-binary-file] [-v] [-V] target


       Analysis Step :
       uncover
            [-?] [-h] [-a] [-c] [-e {on|off}] [-H dir] [-n]
            [-t file] [-v] [-V] target.uc

DESCRIPTION
       uncover  is a command line tool to measure code coverage of your appli‐
       cations. This tool can display information on areas of the  application
       being  exercised  during  testing. The coverage information reported by
       this tool could be at a function, statement, basic block,  or  instruc‐
       tion level.


       Measurements are done by first instrumenting the binaries, then execut‐
       ing  the  binaries.  After  execution,  you can query the coverage data
       based on the execution. You can execute the  binaries  multiple  times,
       and the coverage data will be the accumulation of these multiple execu‐
       tions.


         target  is  the binary file for which the code coverage data is to be
       generated. target.uc is the directory where the code coverage  data  is
       generated and stored.


       uncover  is not compatible with binaries compiled with versions of Stu‐
       dio older than Oracle Developer Studio 12  update  1.  It  works  on  a
       SPARC-based  or x86-based system running the Solaris 10 10/08 operating
       system or a later Solaris 10 update, or Oracle  Solaris  11  or  Oracle
       Linux OS versions 5.x or a later update.


       uncover  works  with any binary built with Oracle Developer Studio com‐
       pilers, but works best with binaries built with no optimization option.
       (Previous releases of uncover required at least  the  -O1  optimization
       level.)  If  your  binary is built with an optimization option, uncover
       results will be better with lower optimization levels (-O1 or -O2). un‐
       cover derives the source line level coverage by relating  the  instruc‐
       tions  to  line  numbers using the debug information generated when the
       binary is built with the -g option.  At  optimization  levels  -O3  and
       higher,  the  compiler  might delete some code that might never be exe‐
       cuted or is redundant, which might result in no binary instructions for
       some source code lines. In such cases, no coverage information will  be
       reported for those lines.


       Binaries compiled with any of the following compiler options are incom‐
       patible with uncover: -p, -pg, -qp, -xpg, and -xlinkopt.


       See the Oracle Developer Studio 12.5:
         Discover and Uncover User's Guide for more information.

OPTIONS
       uncover accepts the following options:


       -?
       -h

           Output the help message.



       -a

           Write  error data to binary-name.analyze/coverage directory for use
           by Code Analyzer (the graphic tool code-analyzer  or  the  command-
           line tool codean).


       -c

           Turn on reporting of execution counts for instructions, blocks, and
           functions.  By default only information on which code is covered or
           not covered is reported. Specify this option both when  instrument‐
           ing your binary and when generating the coverage report.


       -d dir

           Create  coverage  data  inside  the specified directory dir. If not
           specified, the current working directory is used. The coverage data
           directory will be named target.uc underneath the directory dir. Use
           of this flag is strongly recommended if running the binary in  dif‐
           ferent  locations.  It assures that no matter where you run the bi‐
           nary and how many times you run it, the coverage data will be accu‐
           mulated in a single .uc directory for all runs. Also, using -d flag
           is necessary if the directory where instrumentation happens is dif‐
           ferent from the run directory. This is because the  instrumentation
           step creates and initializes the .uc directory and the run step ac‐
           cumulates coverage information in the .uc directory.


       -e {on|off}

           Turn  on or off the invocation of the Performance Analyzer. Default
           is on.


       -H dir

           Display the coverage data in HTML format inside  dir.  When  speci‐
           fied,  the  default browser will be invoked to display the coverage
           data stored in dir.


       -m {on|off}

           When instrumenting your program, turns thread-safe profiling on and
           off. Default is on. Use this option in combination with the -c run‐
           time option. If you instrument a binary that uses threads  with  -m
           off,  the binary fails at runtime and a message is displayed asking
           you to reinstrument the binary with -m on.


       -n

           Do not start the GUI viewer to display the coverage data. When both
           -n and -H options are absent, the Oracle Developer  Studio  Perfor‐
           mance Analyzer will be invoked to display the coverage data.


       -o output_binary_file

           Write  the  instrumented binary file to output_binary_file. The de‐
           fault is to overwrite the input binary file with  the  instrumented
           file.


       -t file

           Display the coverage data in ASCII text in the file file.


       -v

           Turn  on  the  verbose  mode, showing detailed info on steps of the
           command.


       -V

           Print the current version.



EXAMPLES
       Example 1 Instrument, execute, and display coverage data of a.out.



       This example will instrument the binary a.out, next execute the binary,
       and finally display the coverage data of a.out stored  in  a.out.uc  by
       invoking the Performance Analyzer.


         % uncover a.out
         % a.out
         % uncover a.out.uc




       Note: You only need to instrument the binary of interest once.


       Example 2 Generate coverage data directory.



       Similar to example #1, but the coverage data directory a.out.uc is gen‐
       erated underneath the directory abc.


         % uncover -d abc a.out
         % a.out
         % uncover abc/a.out.uc



       Example 3 Display coverage data in HTML format.



       Similar  to  example  #1,  but the binary was executed three times. The
       coverage data to be displayed are in HTML format inside  the  directory
       a.out.html. The default browser will be invoked to display this data.


         % uncover a.out
         % a.out; a.out; a.out
         % uncover -H a.out.html a.out.uc



       Example 4 Example of ASCII coverage report generated by uncover.



       The  following  is  an example of an ASCII coverage report generated by
       uncover:



         % uncover -t unc.report a.out.uc
         Creating experiment database a.out.er ...
         % cat unc.report
         UNCOVER Code Coverage
         Total Functions: 6
         Covered Functions: 3
         Function Coverage: 50.0%
         Total Executable Source Lines (Excludes redundant code removed by
         compiler): 38
         Source Line Coverage: 57.9%
         Total Basic Blocks: 19
         Covered Basic Blocks: 11
         Basic Block Coverage: 57.9%
         Total Basic Block Executions: 11
         Average Executions per Basic Block: 0.58
         Total Instructions: 149
         Covered Instructions: 75
         Instruction Coverage: 50.3%
         Total Instruction Executions: 75
         Average Executions per Instruction: 0.50
         Number of times this program was executed: 1
         Functions sorted by metric: Exclusive Uncoverage

         Excl.       Excl.     Excl.  Excl.      Excl.       Name
         Uncoverage  Function  Instr  Block      Instr
                     Count     Exec   Covered %  Covered %
         172         3         75     238        225         <Total>
          80         0          0       0          0         t3
          60         0          0       0          0         bar
          32         0          0       0          0         t2
           0         1         16      75         45         foo
           0         1         51      63         80         main
           0         1          8     100        100         t1

         Instruction frequency data from experiment a.out.er

         Instruction frequencies of /export/home1/uncover.demo/a.out.uc/a.out
         Instruction          Executed     ()
          TOTAL                     75 (100.0)
          float ops                  0 (  0.0)
          float ld st                0 (  0.0)
          load store                12 ( 16.0)
          load                       8 ( 10.7)
          store                      4 (  5.3)
         --------------------------------------
         Instruction          Executed     ()        Annulled   In Delay Slot
          TOTAL                     75 (100.0)
          call                      13 ( 17.3)              0               0
          add                        9 ( 12.0)              0               5
          sethi                      9 ( 12.0)              1               3
          nop                        7 (  9.3)              0               7
          br                         6 (  8.0)              0               0
          lduw                       6 (  8.0)              0               0
          or                         5 (  6.7)              0               2
          subcc                      5 (  6.7)              0               0
          stw                        3 (  4.0)              0               0
          save                       3 (  4.0)              0               0
          jmpl                       3 (  4.0)              0               0
          restore                    3 (  4.0)              0               3
          ldsb                       2 (  2.7)              0               1
          stb                        1 (  1.3)              0               0
              ============================================================




       Example 5 Getting coverage for shared libraries



       Getting coverage data for a shared library is similar.  Instrument  the
       library  using  uncover,  run the applications that use this shared li‐
       brary, use uncover to get coverage report.


         % uncover -d coverage-dir lib-dir/libfoo.so




       Where coverage-dir is the directory where you need  the  coverage  data
       for all the runs to accumulate in coverage-dir/libfoo.so.uc and lib-dir
       is the directory where the library libfoo.so resides. Assuming your ex‐
       ecutables  have  dynamic  dependency on libfoo.so or use dlopen to call
       libfoo.so, the raw coverage information will get  accumulated  for  all
       these runs in coverage-dir/libfoo.so.uc.



       Use uncover to view the coverage information in any of the four follow‐
       ing formats:


           o      Performance Analyzer graphical tool

                     % uncover coverage-dir/libfoo.so.uc



           o      ASCII report

                     % uncover -t text-report coverage-dir/libfoo.so.uc



           o      HTML report

                     % uncover -h html-report coverage-dir/libfoo.so.uc



           o      Code Analyzer report


                     % uncover -a coverage-dir/libfoo.so.uc

                  The   previous  command  creates  a  directory  called  lib‐
                  foo.so.analyze in  the  same  directory  as  libfoo.so.  Use
                  codean  (text output) or code-analyzer (GUI) to view the re‐
                  sults as follows:

                    % codean lib-dir/libfoo.so


                    % code-analyzer lib-dir/libfoo.so




       Example 6 Collecting Coverage for a Running Process



       It is possible to collect coverage for a  running  process  without  it
       needing to exit. This may be useful for long-running applications which
       do not exit. This can be done by attaching to the running process using
       dbx and calling a function called __uncover_update_coverage().This will
       accumulate  the  profile to the directory named <binary>.uc.Results can
       be viewed by running the uncover command on <binary>.uc, just as it  is
       described in the previous sections.



       Here is a dbx script for doing this and its usage:


         % cat dbx_uncover.sh
         #!/bin/sh
         dbx - $1 << END
         call __uncover_update_coverage()
         exit
         END

         % uncover a.out      // Instrument
         % a.out       // Start the application




       In a separate window, type the following command:


         % dbx_uncover.sh   <process id of a.out>




       The command above accumulates the profile to a.out.uc.



       To view the results, type the following command:


         % uncover a.out.uc



SEE ALSO
       CC(1), cc(1), f95(1), gcc(1), g++(1)

Studio 12.6                      December 2016                      uncover(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3