home *** CD-ROM | disk | FTP | other *** search
/ IRIS Development Option 6.2 / IRIS_Development_Option_6.2_814-0478-001.iso / dist / WorkShop.idb / usr / relnotes / WorkShop / ch3.z / ch3
Text File  |  1996-03-14  |  35KB  |  793 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        3.  _C_h_a_n_g_e_s__a_n_d__A_d_d_i_t_i_o_n_s
  9.  
  10.        Workshop 2.6 provides support for both IRIX 5.3 and IRIX
  11.        6.2.
  12.  
  13.        The SGI Help system uses the online manuals for help
  14.        references. To use the help system, the book subsystems need
  15.        to be installed.
  16.  
  17.        Fix+Continue, the C++ Class Browser, and the Motif Analyzer
  18.        are now part of the WorkShop images. They used to be part of
  19.        the MegaDev images. Fix+Continue is part of _c_v_d.  The C++
  20.        Browser is shipped along with the _c_v_s_t_a_t_i_c. The Motif
  21.        Analyzer is in the _W_o_r_k_S_h_o_p._s_w._m_o_t_i_f subsystem.  Users no
  22.        longer need a MegaDev license to use either of these
  23.        features anymore.
  24.  
  25.        The WorkShop Performance Analyzer has two new features, a
  26.        Butterfly View, which shows the callers and callees of a
  27.        selected function, and the ability to examine a .Counts
  28.        file, as produced by _p_i_x_i_e.
  29.  
  30.        Also, support for debugging _P_u_r_i_f_y'_d binaries has been
  31.        added.
  32.  
  33.        The rest of this chapter lists the changes and additions
  34.        that have been made since WorkShop 2.2, 2.3, 2.4, 2.5 and
  35.        2.5.1.
  36.  
  37.        3.1  _N_e_w__F_e_a_t_u_r_e_s__i_n__T_h_i_s__R_e_l_e_a_s_e
  38.  
  39.        In WorkShop 2.6, the Static Analyzer can analyze Fortran 90
  40.        source code in its accurate parser mode.  Fortran 90 sources
  41.        can also be analyzed in the Static Anayzer's less-accurate
  42.        scanner mode.
  43.  
  44.        RRRReeeeqqqquuuuiiiirrrreeeemmmmeeeennnnttttssss: to use the Static Analyzer on Fortran 90, you
  45.        must have the Fortran 90 compiler installed.
  46.  
  47.        3.1.1  _C_h_a_n_g_e_s__i_n__t_h_e__I_n_t_e_r_f_a_c_e
  48.  
  49.           +o The "Host" text field has been removed.
  50.  
  51.           +o The "Data" menu has been removed and replaced with the
  52.             pop-up expression evaluator.  Pop-up expression
  53.             evaluation is activated by right-clicking in the source
  54.             area in MainView and selecting either "Click to
  55.             Evaluate" or "Auto Evaluate" in the pop-up menu.
  56.             "Click to Evaluate" means that when the process is
  57.             stopped, if you left-click on a symbol the current
  58.             value of that symbol will be displayed in a small pop-
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.             up window near the source.  "Auto Evaluate" means that
  75.             you don't have to click on a symbol to see its value,
  76.             simply move the mouse over the symbol and hesitate; the
  77.             value will appear as though the mouse had been clicked.
  78.             Selecting an expression in either mode will cause it to
  79.             be evaluated.  You can get rid of the pop-up value by
  80.             moving the mouse out of the source area or by touching
  81.             the pop-up value with the mouse cursor.
  82.  
  83.           +o The "Performance Panel" under the "Admin" menu has been
  84.             removed and replaced with the "Perf" menu on the top-
  85.             level menubar.  There are three entries under this
  86.             menu: "Select Task" allows you to specify what
  87.             performance data to gather, "Examine Results" allows
  88.             you to launch the Performance Analyzer, and "Configs"
  89.             brings up the configuration dialog specifying control
  90.             information that you typically shouldn't have to
  91.             change.  The option menu just above the "Run" button
  92.             tells you when you are in debug, performance, or purify
  93.             mode and allows you to turn those modes on and off.
  94.             (Purify mode is only available if Purify from Pure
  95.             Software is installed on your system.)
  96.  
  97.           +o When a performance experiment is finished, cvperf is
  98.             normally started immediately.  This feature may be
  99.             disabled using a toggle in the "Configs..." dialog.
  100.  
  101.           +o When recording performance experiments, a new option
  102.             allows you to follow _f_o_r_k'd processes or not; by
  103.             default, experiments will follow.
  104.  
  105.           +o The source view in the debugger will be shared with a
  106.             Performance Analyzer, and performance annotations will
  107.             appear in it.  Similarly, it will be shared with
  108.             WorkShop Pro MPF, and loop annotations will appear.
  109.  
  110.        3.1.2  _G_e_n_e_r_a_l__C_h_a_n_g_e_s__s_i_n_c_e__2_._4  WorkShop now supports
  111.        debugging and analyzing 64-bit executables built using
  112.        either the MIPS3 or MIPS4 ABI (application binary interface)
  113.        protocols (that is, programs that were built with the -mips3
  114.        or -mips4 flags) in addition to 32-bit executables. The
  115.        ability to support 64-bit executables has three general
  116.        consequences:
  117.  
  118.           +o Any WorkShop view that can display addresses (pointers)
  119.             can display the 64-bit addresses.
  120.  
  121.           +o Any WorkShop view that can display registers shows the
  122.             new configurations of registers and precisions
  123.             available in MIPS3 and MIPS4.  The details are
  124.             discussed in the WorkShop Debugger changes section.
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.           +o Any WorkShop view that displays disassembled source
  141.             code displays the 64-bit instruction set as well as the
  142.             64-bit addresses.
  143.  
  144.           +o WorkShop user authentication has been changed to
  145.             conform to the .rhosts-based model used by rcp and rsh.
  146.             This could break some remote debugging scenarios.  See
  147.             the _c_v_c_o_n_n_e_c_t(1m) and _r_h_o_s_t_s(4) man pages for further
  148.             details.
  149.  
  150.           +o The _W_o_r_k_S_h_o_p _O_v_e_r_v_i_e_w book was added.  This purpose of
  151.             this book is to provide a comprehensive overview of the
  152.             WorkShop features and to provide pointers of where to
  153.             look in the manuals for help.
  154.  
  155.  
  156.        3.2  _C_h_a_n_g_e_s__i_n__t_h_e__D_e_b_u_g_g_e_r
  157.  
  158.           +o Signals are trapped differently by recent versions of
  159.             _c_v_d (versions 2.4 and later) than by earlier versions.
  160.             If a signal is received that may lead to termination of
  161.             the process, earlier versions of _c_v_d would always trap
  162.             the signal.  (See _s_i_g_n_a_l(5) for the list of signals
  163.             that may lead to process termination).
  164.  
  165.             In newer versions of WorkShop, _c_v_d's default behavior
  166.             is to trap such a signal only if the process has not
  167.             registered a handler for the signal.  For example, if
  168.             the action on SIGSEGV is SIG_DFL and the process
  169.             receives a SIGSEGV, _c_v_d will stop the process.  On the
  170.             other hand, if the action on SIGSEGV is a handler
  171.             function and the process receives a SIGSEGV, _c_v_d will
  172.             not stop the process and SIGSEGV will be delivered to
  173.             the process.
  174.  
  175.             _c_v_d's default treatment of such signals can be
  176.             overridden.  The user can choose for a trap on a signal
  177.             either to stop the process whenever the signal is
  178.             received, or to stop the process only when there is no
  179.             handler registered for the signal.  The command _c_a_t_c_h
  180.             <_s_i_g_n_a_l> will cause _c_v_d to always stop the process when
  181.             <signal> is received.  The command _c_a_t_c_h _u_n_h_a_n_d_l_e_d
  182.             <_s_i_g_n_a_l> will cause _c_v_d to stop the process when
  183.             <signal> is received only if there is no handler
  184.             registered for <signal>.  The command _c_a_t_c_h will show
  185.             which signals are being trapped by _c_v_d; the signals
  186.             that are only trapped when there is no registered
  187.             handler are displayed as <signal> (when unhandled).
  188.  
  189.             Those users who prefer to have _c_v_d unconditionally trap
  190.             signals that may cause process termination may create a
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.             ._c_v_d_r_c file in the their home directory and include the
  207.             following lines.  This will cause versions 2.4 and
  208.             later of _c_v_d to behave just as earlier versions with
  209.             regard to the default trapping of signals.
  210.  
  211.               catch SIGINT
  212.               catch SIGQUIT
  213.               catch SIGILL
  214.               catch SIGTRAP
  215.               catch SIGABRT
  216.               catch SIGEMT
  217.               catch SIGFPE
  218.               catch SIGBUS
  219.               catch SIGSEGV
  220.               catch SIGSYS
  221.               catch SIGPIPE
  222.               catch SIGALRM
  223.               catch SIGTERM
  224.               catch SIGUSR1
  225.               catch SIGUSR2
  226.               catch SIGPOLL
  227.               catch SIGVTALRM
  228.               catch SIGPROF
  229.               catch SIGXCPU
  230.               catch SIGXFSZ
  231.  
  232.           +o The debugger's "Remap Paths" feature can now be used to
  233.             map in source files whose name conflicts with a file in
  234.             the current working directory.  As a result of this
  235.             change, if you have sources compiled "-g" in other
  236.             directories, and similarly-named sources in ".", you
  237.             will not get the "." ones automatically.  This is a
  238.             change from prior versions of WorkShop, where the
  239.             sources in "." were used unconditionally.  To force the
  240.             debugger to use the sources in "." in these
  241.             circumstances, use Path Remapping to remap the path
  242.             named in the "File not in executable" dialog to "."
  243.  
  244.           +o The Debugger lets you switch back and forth between
  245.             sessions debugging 32-bit and 64-bit executables.
  246.  
  247.           +o In Main View, the PC address displays as a 64-bit
  248.             address for MIPS3 and MIPS4 executables. The PC address
  249.             appears in the _S_t_a_t_u_s field at the top of the window
  250.             and in the Debugger command line at the bottom of the
  251.             window.
  252.  
  253.           +o The _R_e_s_u_l_t column in Expression View displays 64-bit
  254.             addresses for MIPS3 and MIPS4 executables when you
  255.             select the "Address Of" menu item in the Format menu.
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.           +o The _R_e_s_u_l_t column in Variable Browser displays 64-bit
  273.             addresses for MIPS3 and MIPS4 executables when you
  274.             select the "Address Of" menu item in the Format menu.
  275.  
  276.           +o The _A_d_d_r_e_s_s field and address column display in Memory
  277.             View displays 64-bit addresses for MIPS3 and MIPS4
  278.             executables.
  279.  
  280.           +o The source display area in Disassembly View now
  281.             displays the 64-bit instruction set and the 64-bit
  282.             addresses for MIPS3 and MIPS4. The address fields in
  283.             the "Address..." and "Function..." dialog boxes
  284.             accessed from the Disassemble menu can accommodate 64-
  285.             bit addresses for MIPS3 and MIPS4 executables.
  286.  
  287.           +o Register View has changed the most radically of any of
  288.             the Debugger views. Here's a comparison of Register
  289.             View running a MIPS1 executable versus a MIPS4
  290.             executable:
  291.  
  292.                - Register View has 32 32-bit general purpose
  293.                  registers for MIPS1 executables and 32 64-bit
  294.                  general purpose registers for MIPS4.
  295.  
  296.                - Register View has five 32-bit special purpose
  297.                  registers for MIPS1. For MIPS4 executables, there
  298.                  are four 64-bit special registers and one 32-bit
  299.                  register (_f_p_s_c_r).
  300.  
  301.                - Register View has 16 32-bit floating point
  302.                  registers for MIPS1 executables and 32 32-bit
  303.                  floating point registers for MIPS4.
  304.  
  305.                - Register View has 16 64-bit double-precision
  306.                  registers for MIPS1 executables and 32 64-bit
  307.                  double-precision registers for MIPS4.
  308.  
  309.             The _p_r_i_n_t_r_e_g_s command on the Debugger command line will
  310.             print out the register values for the MIPS1 and MIPS4
  311.             ABIs as well.
  312.  
  313.           +o The following assignment operators for C expressions
  314.             are now supported in Expression View and the Expression
  315.             Evaluator dialog box:
  316.                     =    +=    -=    /=    %=    >>=    <<=    &=
  317.             ^=    |=
  318.  
  319.             0hese should be used with caution to avoid
  320.             inadvertently modifying a variable while stepping
  321.             through a program. the name of the .Counts file as an
  322.             argument.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.           +o The performance tools now work on both 32- and 64-bit
  339.             non-shared executables with two exceptions:
  340.  
  341.                - You cannot perform malloc/free tracing on non-
  342.                  shared executables. The _l_i_b_e_x_c._a library is not
  343.                  available.
  344.  
  345.                - You cannot perform fpe tracing on 64-bit programs,
  346.                  shared or non-shared. There is no _l_i_b_f_p_e._s_o shared
  347.                  object for 64-bits or n32, nor is there a _l_i_b_f_p_e._a
  348.                  library for non-shared programs.
  349.  
  350.                - A new view, the Butterfly View, is available.  It
  351.                  is a textual alternative to the Callgraph View
  352.                  that shows the current selected node in the
  353.                  center, with scrolled lists of callers (parents)
  354.                  above it, and callees (children) below it.  It has
  355.                  the following features:
  356.  
  357.                     - Each entry in the list shows the same
  358.                       information shown in the main function list,
  359.                       along with an attribution percentage of
  360.                       whichever data item the main function list is
  361.                       sorted by.  For the selected function itself,
  362.                       the attribution percentage is the percentage
  363.                       of the function's Inclusive <whatever> that
  364.                       comes from the function's Exclusive
  365.                       <whatever>, and the attribution percentage of
  366.                       the children represent the percentage of the
  367.                       Inclusive <whatever> of the selected node
  368.                       that came from that child.  For the parents,
  369.                       the attribution percentage is that percentage
  370.                       of the selected function's inclusive
  371.                       <whatever> that is attributed to the
  372.                       particular parent function.  Note that for
  373.                       some sort orders, (e.g., address, alphabetic,
  374.                       calls, instruction counts, ...) there either
  375.                       is no corresponding data to propagate along
  376.                       the arcs, or we do not keep the data, because
  377.                       it takes too much memory; for those data
  378.                       types, the attribution percentages are all
  379.                       shown as "-".  Attribution percentages shown
  380.                       as "0. %" mean a true zero, while those shown
  381.                       as "0.0%" mean a value > 0, but < 0.1%.
  382.  
  383.                     - A single click on any line in the parent or
  384.                       child lists will select the node
  385.                       corresponding to that line, and refill the
  386.                       view with data based on the new selected
  387.                       function.  Similarly, a single click in the
  388.                       main function list, or any node in the graph
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.                       will refill the Butterfly View.
  405.  
  406.                     - There are two controls on the "Config" menu
  407.                       of the butterfly view.  "Show Zero Arcs"
  408.                       determines whether or not zero-arcs, that is
  409.                       arcs that were never traversed, are shown.
  410.                       Zero arcs will have their attribution
  411.                       percentages shown as "0. %".  "Show All Arcs
  412.                       Individually" determines whether a single arc
  413.                       is shown between two nodes, with the data
  414.                       summed across all callsites from the parent
  415.                       to the child, or whether each individual arc
  416.                       (callsite) is shown.  If it is selected, the
  417.                       function name of each child has a PC value
  418.                       appended to it corresponding to the address
  419.                       of the individual call to that child function
  420.                       from the selected function; likewise, the
  421.                       parent name has the address of its call to
  422.                       the selected function appended.  (The PC
  423.                       address is shown rather than the line number
  424.                       because it is very expensive to look up the
  425.                       linenumber for each call site.  You can see
  426.                       which call site is which by invoking the
  427.                       source for the appropriate function.)
  428.  
  429.                     - The source of the selected function can be
  430.                       invoked by the "Source" button just above the
  431.                       line for the selected function.  There is no
  432.                       control that directly allows invocation of
  433.                       source from a line in either the parent or
  434.                       the child list.
  435.  
  436.                - Performance experiments on executables that
  437.                  dynamically link many DSOs can be expensive,
  438.                  because we currently record a sample at every
  439.                  invocation of _d_l_o_p_e_n.  We believe it is preferable
  440.                  to not take a sample at all such calls, but have
  441.                  not tested it sufficiently to make it the default.
  442.                  To record experiments without such samples, you
  443.                  need to set:
  444.                       _c_v_m_o_n*_n_o_S_a_m_p_l_e_O_n_D_l_o_p_e_n to TRUE in your
  445.                       ._X_d_e_f_a_u_l_t_s file.
  446.  
  447.                - A new graph pushbutton, _S_h_o_w _I_m_p_o_r_t_a_n_t _P_a_r_e_n_t_s, is
  448.                  available.  It will show those callers of a given
  449.                  function where usage exceeds a threshold.
  450.  
  451.                - The Performance Analyzer now can show information
  452.                  about working sets for instructions for Ideal-time
  453.                  experiments.  The new Working Set View will show a
  454.                  list of the program and its DSOs in the program,
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.                  and, for a selected DSO, show the page layout and
  471.                  utilization.
  472.  
  473.                - A new tool, _c_v_c_o_r_d, the Cord Analyzer is available
  474.                  for producing cord feedback files to optimize
  475.                  instruction working sets for programs.  It takes
  476.                  working set information from one or more
  477.                  experiments and/or different caliper settings, and
  478.                  computes an optimized layout to improve working
  479.                  set behavior.  Although the tool works on both 32-
  480.                  and 64-bit programs, at this time _c_o_r_d itself only
  481.                  works on 32-bit executables and DSOs.  See the
  482.                  _c_v_c_o_r_d man page for further information.
  483.  
  484.                - The Performance Analyzer can now obtain
  485.                  performance data equivalent to _p_i_x_i_e and _p_i_x_s_t_a_t_s.
  486.                  This lets you see metrics based on the time that
  487.                  instructions were available for processing but
  488.                  could not be completed for some reason, such as
  489.                  branch, function unit, or operand delays.
  490.  
  491.                  To capture _p_i_x_i_e data, you select the task "Get
  492.                  Ideal Time (pixie) per function & source line"
  493.                  from the Task menu in the Performance Panel. (This
  494.                  task was formerly called "Get Ideal Time per
  495.                  function & source line".) The new version of the
  496.                  task enables you to show the following types of
  497.                  performance data in your experiments:
  498.  
  499.                     - Inclusive percentage time - the percentage of
  500.                       time that instructions in this function (and
  501.                       any called functions) were available for
  502.                       processing but could not be processed.
  503.  
  504.                     - Exclusive percentage time - the percentage of
  505.                       time that instructions in this function
  506.                       (excluding any calls) were available for
  507.                       processing but could not be processed.
  508.  
  509.                     - Inclusive cycles - the number of elapsed
  510.                       cycles in this function, line of code, or
  511.                       instruction (including any calls).
  512.  
  513.                     - Exclusive cycles - the number of elapsed
  514.                       cycles in this function, line of code, or
  515.                       instruction (excluding any calls).
  516.  
  517.                     - Instruction coverage - the percentage of the
  518.                       instructions within each function that were
  519.                       actually executed. In the disassembled
  520.                       source, branch-taken counts are displayed.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.                       Branch-taken counts show the number of times
  537.                       that each conditional branch was taken.
  538.  
  539.                     - Pixstats/Cycles-per instruction - the ratio
  540.                       of cycles to instructions. In a classic RISC
  541.                       machine, the Pixstats/Cycles-per instruction
  542.                       ratio would be 1.0. If the ratio is much
  543.                       greater than 1.0, you should check the
  544.                       disassembled source to determine the reasons
  545.                       for this inefficiency.  Clicking the
  546.                       Disassembled Source button in the Performance
  547.                       Analyzer displays the disassembled code in a
  548.                       Source View window with a special three-part
  549.                       annotation. A yellow bar spanning the top of
  550.                       three columns in this annotation indicates
  551.                       the first instruction in each basic block.
  552.                       The first column labelled _C_l_o_c_k in the
  553.                       annotation displays the clock number in which
  554.                       the instruction issues relative to the start
  555.                       of a basic block. If you see clock numbers
  556.                       replaced by ditto marks ("), it means that
  557.                       multiple instructions were issued in the same
  558.                       cycle. The second column is labelled _S_t_a_l_l
  559.                       and shows how many clocks elapsed during the
  560.                       stall before the instruction was issued. The
  561.                       third column labelled _W_h_y shows the reason
  562.                       for the stall. There are three possibilities:
  563.  
  564.                          +o B - branch delay
  565.  
  566.                          +o F - function unit delay
  567.  
  568.                          +o O - operand hasn't arrived yet
  569.  
  570.                - The Performance Analyzer also provides a new view,
  571.                  Malloc Error View, that lets you focus on _m_a_l_l_o_c
  572.                  errors without having to sort through legitimate
  573.                  _m_a_l_l_o_c operations.  Malloc Error View is available
  574.                  when you perform the "Find Memory Leaks" task. It
  575.                  takes the same form as Malloc View--the difference
  576.                  is that where Malloc View displays all _m_a_l_l_o_c_s in
  577.                  its list area (the upper pane), Malloc Error View
  578.                  displays only _m_a_l_l_o_c_s or _f_r_e_e_s that caused errors,
  579.                  identifying the cause of the problem and how many
  580.                  times it occurred. Malloc Error View replaces some
  581.                  of the functionality of Heap View.
  582.  
  583.                  When you run a "Find Memory Leaks" experiment and
  584.                  the Performance Analyzer detects a _m_a_l_l_o_c error, a
  585.                  dialog box will display recommending that you use
  586.                  Malloc Error View to analyze the results.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.                - The "Find Memory Leaks Task" task has four
  603.                  associated performance metrics available. The leak
  604.                  counts were previously on by default--the malloc
  605.                  counts are now turned on as well. The metrics are:
  606.  
  607.                     - Inclusive Bytes Leaked - the number of bytes
  608.                       leaked from this function (including any
  609.                       called functions). This metric can be turned
  610.                       on for arcs as well as functions.
  611.  
  612.                     - Exclusive Bytes Leaked - the number of bytes
  613.                       leaked from this function (excluding any
  614.                       called functions).
  615.  
  616.                     - Inclusive Bytes malloc'ed - the number of
  617.                       bytes _m_a_l_l_o_c'_e_d from this function (including
  618.                       any called functions). This metric can be
  619.                       turned on for arcs as well as functions.
  620.  
  621.                     - Exclusive Bytes malloc'ed - the number of
  622.                       bytes _m_a_l_l_o_c'_e_d from this function (excluding
  623.                       any called functions).
  624.  
  625.                - There is a new task called "Get PC Sampling
  626.                  Times". It has no new functionality.  It simply
  627.                  lets you perform statistical profiling with fine
  628.                  grained usage sampling at 1-second intervals
  629.                  without capturing any other performance data.  It
  630.                  works on 32- and 64-bit processes and under IRIX
  631.                  6.2.
  632.  
  633.                - The "Determine bottlenecks, identify phases" task
  634.                  and the "Get Total Time per function & source
  635.                  line" task both capture Call Stack Profiling data
  636.                  every 100 msec. by default.
  637.  
  638.                - I/O tracing has been incorporated into Syscall
  639.                  Tracing. When you perform Syscall tracing
  640.                  experiments, you can now get _r_e_a_d and _w_r_i_t_e counts
  641.                  and can display I/O View.
  642.  
  643.                - If you prefer to sort by exclusive rather than
  644.                  inclusive data by default, you need to set
  645.                  _c_v_p_e_r_f*_e_m_p_h_a_s_i_z_e_E_x_c_l_u_s_i_v_e to TRUE in your
  646.                  ._X_d_e_f_a_u_l_t_s file.
  647.  
  648.                - The following environment variables are available
  649.                  for "Find Memory Leaks" experiments:
  650.  
  651.                     - _M_A_L_L_O_C__V_E_R_B_O_S_E
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                     - _M_A_L_L_O_C__T_R_A_C_I_N_G
  669.  
  670.                     - _M_A_L_L_O_C__F_A_S_T_C_H_K
  671.  
  672.                     - _M_A_L_L_O_C__M_A_X_M_A_L_L_O_C
  673.  
  674.                     - _M_A_L_L_O_C__N_O__R_E_U_S_E
  675.  
  676.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E
  677.  
  678.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E__P_A_T_T_E_R_N
  679.  
  680.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C
  681.  
  682.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C__P_A_T_T_E_R_N
  683.  
  684.                       These are described in detail in the
  685.                       reference (man) page for _m_a_l_l_o_c__c_v.
  686.  
  687.  
  688.        3.3  _C_h_a_n_g_e_s__i_n__t_h_e__T_e_s_t_e_r
  689.  
  690.  
  691.  
  692.           +o _C_v_c_o_v now includes a command, _o_p_t_i_m_i_z_e, that will
  693.             analyze a set of tests and choose the minimum set of
  694.             tests that will either have the same coverage or meet
  695.             user's coverage criteria.
  696.  
  697.           +o Two options, ----ccccoooommmmpppprrrreeeessssssss and ----bbbbiiiittttccccoooouuuunnnntttt, have been added
  698.             in _c_v_c_o_v's _r_u_n_t_e_s_t command. Option ----ccccoooommmmpppprrrreeeessssssss saves
  699.             experiment database in compressed format while
  700.             ----bbbbiiiittttccccoooouuuunnnntttt transforms count file into 1-bit-per-count
  701.             format.
  702.  
  703.           +o An option, ----aaaaddddddddrrrr, has been added in _c_v_c_o_v's _l_s_b_l_o_c_k and
  704.             _l_s_b_r_a_n_c_h commands to show blocks and branches by PC
  705.             addresses instead of souce line numbers as default.
  706.  
  707.        3.4  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__o_t_h_e_r__T_o_o_l_s
  708.  
  709.        WorkShop includes facilities for integrating with other
  710.        tools.  The WorkShop tools can be started from other
  711.        WorkShop tools by using the "Launch Tool" sub-menu under the
  712.        "Admin" menu.  You can add entries to the "Launch Tool" menu
  713.        by adding lines to the file
  714.        /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h.  The format of the
  715.        entries in this file is the menu entry, followed by a comma,
  716.        followed by the command line that should be run to start the
  717.        tool.
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.        3.5  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__C_a_d_r_e__t_e_a_m_wwww_oooo_rrrr_kkkk
  735.  
  736.        The WorkShop "Launch Tool" menus can be combined with
  737.        team_w_o_r_k's User Menus to provide a tight coupling between
  738.        the WorkShop tools and Cadre team_w_o_r_k tools.
  739.  
  740.        3.5.1  _S_t_a_r_t_i_n_g__t_e_a_m_wwww_oooo_rrrr_kkkk__f_r_o_m__W_o_r_k_S_h_o_p  Adding the following
  741.        line to the file /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h
  742.  
  743.        TTTTeeeeaaaammmmwwwwoooorrrrkkkk,,,, ////ccccaaaaddddrrrreeee////ttttssssaaaa////ccccoooommmm////tttteeeeaaaammmmwwwwoooorrrrkkkk
  744.  
  745.        will provide an entry labeled "Teamwork" in the "Launch
  746.        Tool" sub-menu of the "Admin" menu of the WorkShop tools.
  747.        Selecting this menu entry will start up team_w_o_r_k.
  748.  
  749.        3.5.2  _S_t_a_r_t_i_n_g__W_o_r_k_S_h_o_p__t_o_o_l_s__f_r_o_m__t_e_a_m_wwww_oooo_rrrr_kkkk  Here is a
  750.        sample team_w_o_r_k User Menu file for the WorkShop tools:
  751.  
  752.  
  753.        #### WWWWoooorrrrkkkkSSSShhhhoooopppp UUUUsssseeeerrrr MMMMeeeennnnuuuu DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
  754.  
  755.        ((((MMMMeeeennnnuuuu
  756.            ((((NNNNaaaammmmeeee """"WWWWoooorrrrkkkkSSSShhhhoooopppp""""))))
  757.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  758.                ((((NNNNaaaammmmeeee """"DDDDeeeebbbbuuuuggggggggeeeerrrr""""))))
  759.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvdddd""""))))))))
  760.            ))))
  761.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  762.                ((((NNNNaaaammmmeeee """"BBBBuuuuiiiilllldddd AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  763.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvbbbbuuuuiiiilllldddd""""))))))))
  764.            ))))
  765.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  766.                ((((NNNNaaaammmmeeee """"PPPPaaaarrrraaaalllllllleeeellll AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  767.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppaaaavvvv""""))))))))
  768.            ))))
  769.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  770.                ((((NNNNaaaammmmeeee """"PPPPeeeerrrrffffoooorrrrmmmmaaaannnncccceeee AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  771.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppeeeerrrrffff""""))))))))
  772.            ))))
  773.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  774.                ((((NNNNaaaammmmeeee """"SSSSttttaaaattttiiiicccc AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  775.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvssssttttaaaattttiiiicccc""""))))))))
  776.            ))))
  777.        ))))
  778.  
  779.        By including these definitions in a user menu file, you will
  780.        be able to start up any of the WorkShop tools directly from
  781.        the team_w_o_r_k tools.
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.