User Guide

Intel® VTune™ Profiler User Guide

ID 766319
Date 12/16/2022
Public

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

Document Table of Contents

Analyze Statically Linked Binaries on Linux* Targets

To profile a statically linked binary file, temporary stop stripping the binary file during compilation and make sure the binary file exports the following symbols from system libraries:

  • _init() in the main executable: if you profile a tree of processes, consider using the strategy option.

  • libc.so:

    • A target exports setenv, getenv(), and __errno_location() symbols unconditionally.

    • If a target employs recv() API, it exports recv() and poll().

    • If a target employs sleep() or usleep() APIs, it exports sleep() or usleep() respectively, and nanosleep() symbol.

  • libpthread.so:

    • If a target employs pthread_create() API, it exports the following symbols:

      • pthread_create()

      • pthread_key_create()

      • pthread_setspecific()

      • pthread_getspecific()

      • pthread_self()

      • pthread_getattr_np()

      • pthread_attr_destroy()

      • pthread_attr_setstack()

      • pthread_attr_getstack()

      • pthread_attr_getstacksize()

      • pthread_attr_setstacksize()

      • If a target employs pthread_cancel() API, it exports the following symbols:

        • pthread_cancel()

        • _pthread_cleanup_push()

        • _pthread_cleanup_pop()

      • If a target employs _pthread_cleanup_push() or _pthread_cleanup_pop() API, it exports the following symbols:

        • _pthread_cleanup_push()

        • _pthread_cleanup_pop()

      • If a target employs pthread_mutex_lock() API, it exports pthread_mutex_lock() and pthread_mutex_trylock() symbol.

      • If a target employs pthread_spin_lock() API, it exports pthread_spin_lock() and pthread_spin_trylock() symbol.

  • libdl.so:

    If a target employs any of dlopen(), dlsym(), or dlclose() APIs, it exports all three of them simultaneously.

If the binary file does not export some of the symbols above, use the -u linker switch (for example, specify -Wl,-u__errno_location if you use compiler for linking) to include symbols into the binary file at the linking stage of compilation.

Did you find the information on this page useful?

Characters remaining:

Feedback Message