Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Dumping Profile Information

The _PGOPTI_Prof_Dump_All() function dumps the profile information collected by the instrumented application. The prototype of the function call is as follows:

void _PGOPTI_Prof_Dump_All(void);

An older version of this function, _PGOPTI_Prof_Dump(), is deprecated and no longer used.

The new function, _PGOPTI_Prof_Dump_All(), operates much like the deprecated function, except on Linux operating systems, when it is used in connection with shared libraries (.so). When _PGOPTI_Prof_Dump_All() is called, it insures that a .dyn file is created for all shared libraries needing to create a .dyn file. Use _PGOPTI_Prof_Dump_All() on Linux to insure portability and correct functionality.

The environment variables that affect the _PGOPTI_Prof_Dump_All() function are PROF_DIR, COV_DIR, PROF_DPI, and COV_DPI. Set the PROF_DIR or COV_DIR environment variable to specify the directory to which the .dyn file must be stored. Alternately, you can use the –[Q]prof_dir compiler option, when building with -[Q]prof-gen, to specify this directory without setting the PROF_DIR or COV_DIR variable. Set the PROF_DPI or COV_DPI environment variables to specify an alternative .dpi filename. The default filename is pgopti.dpi. You can also use the –prof_dpi profmerge tool option, when merging the .dyn files, to specify the filename for the summary .dpi file.

Recommended Usage

If your application does not use a standard exit() call, insert a single call to this function in the body of the function that terminates the user application. Normally, _PGOPTI_Prof_Dump_All() should be called just once. It is also possible to use this function in conjunction with _PGOPTI_Prof_Reset_All() function to generate multiple .dyn files (presumably from multiple sets of input data).

NOTE:

If the data is not reset between the dumps with a call to the _PGOPTI_Prof_Reset_All() function, the counters will continue accumulating data, resulting in the subsequent .dyn file containing data that was previously dumped.

#include <pgouser.h>
void process_data(int foo) {}
int  get_input_data() { return 1; }
int  main(void)
{
// Selectively collect profile information for the portion
// of the application involved in processing input data.
  int input_data = get_input_data();
  while (input_data) {
    _PGOPTI_Prof_Reset All();
    process_data(input_data);
    _PGOPTI_Prof_Dump_All();
    input_data = get_input_data();
  }
  return 0;
}