| <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" |
| "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" |
| [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > |
| <!--SPDX-License-Identifier: CC-BY-2.0-UK--> |
| |
| <chapter id='profile-manual-intro'> |
| |
| <title>Yocto Project Profiling and Tracing Manual</title> |
| <section id='profile-intro'> |
| <title>Introduction</title> |
| |
| <para> |
| Yocto bundles a number of tracing and profiling tools - this 'HOWTO' |
| describes their basic usage and shows by example how to make use |
| of them to examine application and system behavior. |
| </para> |
| |
| <para> |
| The tools presented are for the most part completely open-ended and |
| have quite good and/or extensive documentation of their own which |
| can be used to solve just about any problem you might come across |
| in Linux. |
| Each section that describes a particular tool has links to that |
| tool's documentation and website. |
| </para> |
| |
| <para> |
| The purpose of this 'HOWTO' is to present a set of common and |
| generally useful tracing and profiling idioms along with their |
| application (as appropriate) to each tool, in the context of a |
| general-purpose 'drill-down' methodology that can be applied |
| to solving a large number (90%?) of problems. |
| For help with more advanced usages and problems, please see |
| the documentation and/or websites listed for each tool. |
| </para> |
| |
| <para> |
| The final section of this 'HOWTO' is a collection of real-world |
| examples which we'll be continually adding to as we solve more |
| problems using the tools - feel free to add your own examples |
| to the list! |
| </para> |
| </section> |
| |
| <section id='profile-manual-general-setup'> |
| <title>General Setup</title> |
| |
| <para> |
| Most of the tools are available only in 'sdk' images or in images |
| built after adding 'tools-profile' to your local.conf. |
| So, in order to be able to access all of the tools described here, |
| please first build and boot an 'sdk' image e.g. |
| <literallayout class='monospaced'> |
| $ bitbake core-image-sato-sdk |
| </literallayout> |
| or alternatively by adding 'tools-profile' to the |
| EXTRA_IMAGE_FEATURES line in your local.conf: |
| <literallayout class='monospaced'> |
| EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile" |
| </literallayout> |
| If you use the 'tools-profile' method, you don't need to build an |
| sdk image - the tracing and profiling tools will be included in |
| non-sdk images as well e.g.: |
| <literallayout class='monospaced'> |
| $ bitbake core-image-sato |
| </literallayout> |
| <note><para> |
| By default, the Yocto build system strips symbols from the |
| binaries it packages, which makes it difficult to use some |
| of the tools. |
| </para><para>You can prevent that by setting the |
| <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_STRIP'><filename>INHIBIT_PACKAGE_STRIP</filename></ulink> |
| variable to "1" in your |
| <filename>local.conf</filename> when you build the image: |
| </para> |
| </note> |
| <literallayout class='monospaced'> |
| INHIBIT_PACKAGE_STRIP = "1" |
| </literallayout> |
| The above setting will noticeably increase the size of your image. |
| </para> |
| |
| <para> |
| If you've already built a stripped image, you can generate |
| debug packages (xxx-dbg) which you can manually install as |
| needed. |
| </para> |
| |
| <para> |
| To generate debug info for packages, you can add dbg-pkgs to |
| EXTRA_IMAGE_FEATURES in local.conf. For example: |
| <literallayout class='monospaced'> |
| EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile dbg-pkgs" |
| </literallayout> |
| Additionally, in order to generate the right type of |
| debuginfo, we also need to set |
| <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_DEBUG_SPLIT_STYLE'><filename>PACKAGE_DEBUG_SPLIT_STYLE</filename></ulink> |
| in the <filename>local.conf</filename> file: |
| <literallayout class='monospaced'> |
| PACKAGE_DEBUG_SPLIT_STYLE = 'debug-file-directory' |
| </literallayout> |
| </para> |
| </section> |
| </chapter> |
| <!-- |
| vim: expandtab tw=80 ts=4 |
| --> |