<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kcachegrind '<application
>KCachegrind</application
>'>
  <!ENTITY cachegrind "<application
>Cachegrind</application
>">
  <!ENTITY valgrind "<application
>Valgrind</application
>">
  <!ENTITY kappname "&kcachegrind;">
  <!ENTITY package "kdesdk">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % Swedish "INCLUDE">
]>

<!-- ................................................................ -->

<book lang="&language;">

<bookinfo>
<title
>Handbok &kcachegrind;</title>

<authorgroup>
<author
><firstname
>Josef</firstname
> <surname
>Weidendorfer</surname
> <affiliation
> <address
><email
>Josef.Weidendorfer@gmx.de</email
></address>
</affiliation>
</author>
</authorgroup>

<copyright>
<year
>2002</year>
<holder
>Josef Weidendorfer</holder>
</copyright>
<legalnotice
>&FDLNotice;</legalnotice>

<date
>2003-09-18</date>
<releaseinfo
>0.4.3</releaseinfo>

<abstract>
<para
>&kcachegrind; är ett &kde;-gränssnitt för &cachegrind;, en del av &valgrind;. </para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>kdesdk</keyword>
<keyword
>Cachegrind</keyword>
<keyword
>Valgrind</keyword>
<keyword
>Profilering</keyword>
</keywordset>

</bookinfo>


<chapter id="introduction">
<title
>Inledning</title>

<para
>När du utvecklar ett program, är oftast ett av de sista stegen att göra det så snabbt som möjligt (men fortfarande riktigt). Du vill inte slösa bort din tid på att optimera funktioner som sällan används. Därför måste du veta i vilka delar av programmet som den största delen av tiden går åt. </para>

<para
>Detta kallas profilering. Programmet körs under kontroll av ett profileringsverktyg, som ger spårning av körningen. Efter spårningen har undersökts, vet du troligen var du ska optimera och efteråt verifierar du hur optimeringen lyckades med ytterligare en profileringskörning. </para>

<para
>Mest känt är GCC:s profileringsverktyg <application
>gprof</application
>. Du måste kompilera programmet med väljaren <option
>-pg</option
>, köra programmet för att skapa filen <filename
>gmon.out</filename
>, som kan översättas till läsbar form med <command
>gprof</command
>. Nackdelen är kompileringssteget för att förbereda det körbara programmet, som också måste länkas statiskt. </para>

<para
>Ett annat profileringsverktyg är &cachegrind;, som är en del av &valgrind;. Det använder emuleringen av processorn i Valgrind för att köra programmet, och fångar alla minnesåtkomster för spårningen. Programmet behöver inte kompileras om, det kan använda delade bibliotek och insticksprogram, och profileringsmätningen påverkar inte resultatet av spårningen. Spårningen omfattar antal instruktioner, åtkomster till dataminnet och cachemissar i första och andra nivåns cacher, och relaterar det till källkodsrader och funktioner i programmet som kör (en nackdel är insaktandet beroende på emuleringen av processorn, det är olyckligtvis omkring 50 gånger långsammare). </para>

<para
>En programfix för källkoden till &valgrind; 1.0.x lägger till spårning av anropsträdet, dvs. hur funktionerna anropar varandra och hur många händelser som sker medan en funktion körs (inklusive alla anropade funktioner). </para>

<para
>&kappname; är ett verktyg för att åskådliggöra profileringsdata som skapas av &cachegrind;. Du rekommenderas bestämt att lägga till stöd för spårning av anropsträd till &cachegrind;, eftersom &kcachegrind; på så sätt blir mycket mer användbart. </para>
</chapter>

<chapter id="using-kcachegrind">
<title
>Att använda &kcachegrind;</title>

<note>
<para
>Observera: Varje komponent i &kcachegrind; har <quote
>Vad är det här?</quote
> hjälp. Om du inte vill leta i dokumentationen, använd den! </para>
</note>

<sect1>
<title
>Exempel för att snabbt komma igång</title>


<para
>Kör det helt enkelt!</para>
</sect1>

<sect1 id="features">
<title
>Funktioner i &kcachegrind;</title>

<para
>Stöder: godtyckliga händelser, funktionsgruppering</para>
</sect1>

<sect1 id="guidelines">
<title
>Allmänna riktlinjer</title>

<para
>Effektiv profilering...</para>

</sect1>
<sect1 id="tutorial">
<title
>Handledning</title>

<para
>En profileringssession med &kcachegrind;.</para>

</sect1>
</chapter>

<chapter id="commands">
<title
>Kommandoreferens</title>

<sect1 id="kcachegrind-mainwindow">
<title
>&kcachegrind;s huvudfönster</title>
<para
></para>

<sect2>
<title
>Menyn <guimenu
>Arkiv</guimenu
></title>
<para>
<variablelist>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>N</keycap
></keycombo
> </shortcut
> <guimenu
>Arkiv</guimenu
> <guimenuitem
>Ny</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Skapar ett nytt dokument</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>S</keycap
></keycombo
> </shortcut
> <guimenu
>Arkiv</guimenu
> <guimenuitem
>Spara</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Sparar dokumentet</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>Q</keycap
></keycombo
> </shortcut
> <guimenu
>Arkiv</guimenu
> <guimenuitem
>Avsluta</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Avslutar</action
> &kappname;</para
></listitem>
</varlistentry>
</variablelist>
</para>

</sect2>

</sect1>
</chapter>

<chapter id="faq">
<title
>Vanliga frågor</title>
&reporting.bugs; &updating.documentation; <qandaset id="faqlist">
<qandaentry>
<question>
<para
>&kcachegrind; verkar häftigt. Men jag förstår det inte. Vad är det bra för?</para>
</question>
<answer>
<para
>&kcachegrind; är till hjälp vid ett sent steg i programutveckling som kallas profilering. Om du inte utvecklar program, behöver du inte &kcachegrind;. </para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para
>Jag får kompileringsfel. Vad kan problemet vara?</para>
</question>
<answer>
<para
>Ofta har inte &Qt;-installationen stöd för &kde;... </para>
</answer>
</qandaentry>
</qandaset>
</chapter>

<chapter id="credits">


<title
>Tack till och licens</title>

<para
>&kappname; </para>
<para
>Tack till Julian Seward för det utmärkta verktyget &valgrind;, och Nicholas Nethercote för tillägget &cachegrind;. Utan dessa program, skulle varken programfixen för anropsträd till &valgrind; eller <application
>KCachegrind</application
> finnas. Många av idéerna för det grafiska gränssnittet kommer också från dem. </para>
<para
>Och tack för alla felrapporter och förslag från olika användare. Sist men inte minst, tack till <itemizedlist>
<listitem
><para
>&kde;, det underbara programramverket,</para>
</listitem>
<listitem
><para
>&Qt;, den perfekta verktygslådan för grafiska användargränssnitt,</para>
</listitem>
<listitem
><para
>&Linux;, det slutgiltiga operativsystemet.</para>
</listitem>
</itemizedlist>
</para>
&underFDL; </chapter>

<appendix id="installation">
<title
>Installation</title>

<sect1 id="getting-kcachegrind">
<title
>Hur man skaffar &kcachegrind;</title>

<para
>&kcachegrind; har en hemsida på <ulink url="http://www.weidendorfers.de/kcachegrind"
>http://www.weidendorfers.de/kcachegrind</ulink
>. Titta där för att hitta ytterligare installations- och kompileringsinstruktioner. </para>
</sect1>

<sect1 id="requirements">
<title
>Krav</title>

<para
>För att använda &kcachegrind; med lyckat resultat, behöver du &kde; 3.x. För att skapa profileringsspårningar, krävs &cachegrind;. För att tillåta de mest intressanta alternativen för åskådliggörande i &kcachegrind;, använd programfixen för anropsträd från &kcachegrind;s hemsida med &valgrind;s källkod. </para>
</sect1>

<sect1 id="compilation">
<title
>Kompilering och installation</title>
&install.compile.documentation; </sect1>

<sect1 id="configuration">
<title
>Anpassning</title>

<para
>Alla inställningsalternativ finns antingen i inställningsdialogrutan eller i sammanhangsberoende menyer i diagrammen. </para>

</sect1>

</appendix>

&documentation.index;
</book>
<!--
Local Variables:
mode: sgml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:
-->













