.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2014 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sprof 1 "2. maj 2024" "Linux man\-pages 6.8" .SH NAVN sprof \- læs og vis delte objektprofileringsdata .SH SYNOPSIS .nf \fBsprof\fP [\fItilvalg\fP]... \fIdelt\-objekt\-sti\fP [\fIprofil\-data\-sti\fP] .fi .SH BESKRIVELSE Kommandoen \fBsprof\fP viser en profileringsoversigt for det delte objekt (delt bibliotek) angivet som dets første kommandolinjeargument. Profileringsoversigten oprettes via tidligere oprettede profileringsdata i det (valgfrie) andet kommandolinjeargument. Hvis profileringsdatastinavnet udelades, så vil \fBsprof\fP forsøge at udlede denne via soname for det delte objekt, kiggende efter en fil med navnet \fI.profile\fP i den nuværende mappe. .SH TILVALG De følgende kommandolinjetilvalg angiver profilresultatet: .TP \fB\-\-call\-pairs\fP .TQ \fB\-c\fP Vis en liste af par for kaldstier for grænsefladerne eksporteret af det delte objekt, sammen med antallet af gange hver sti anvendes. .TP \fB\-\-flat\-profile\fP .TQ \fB\-p\fP Opret en flad profil for alle funktonerne i det overvågede objekt, med antal og krydser. .TP \fB\-\-graph\fP .TQ \fB\-q\fP Opret en kaldgraf. .P Hvis ingen af de ovenstående tilvalg er angivet, så er standardopførelsen at vise en flad profil og en kaldgraf. .P De følgende yderligere tilvalg for kommandolinjen er tilgængelige: .TP \fB\-\-help\fP .TQ \fB\-?\fP Vis en summering af tilvalg for kommandolinjen samt argumenter og afslut. .TP \fB\-\-usage\fP Vis en kort hjælpetekst og afslut. .TP \fB\-\-version\fP .TQ \fB\-V\fP Vis programversionen og afslut. .SH STANDARDER GNU. .SH EKSEMPLER Det følgende eksempel viser brugen af \fBsprof\fP. Eksemplet består af et hovedprogram, der kalder to funktioner i et delt objekt. Først koden for hovedprogrammet: .P .in +4n .EX $ \fBcat prog.c\fP #include \& void x1(void); void x2(void); \& int main(int argc, char *argv[]) { x1(); x2(); exit(EXIT_SUCCESS); } .EE .in .P Funktionerne \fIx1\fP() og \fIx2\fP() er defineret i den følgende kildefil, der bruges til at konstruere det delte objekt: .P .in +4n .EX $ \fBcat libdemo.c\fP #include \& void consumeCpu1(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } \& void x1(void) { for (unsigned int j = 0; j < 100; j++) consumeCpu1(200000); } \& void consumeCpu2(int lim) { for (unsigned int j = 0; j < lim; j++) getppid(); } \& void x2(void) { for (unsigned int j = 0; j < 1000; j++) consumeCpu2(10000); } .EE .in .P Nu konstruerer vi det delte objekt med det reelle navn \fIlibdemo.so.1.0.1\fP og soname \fIlibdemo.so.1\fP: .P .in +4n .EX $ \fBcc \-g \-fPIC \-shared \-Wl,\-soname,libdemo.so.1 \e\fP \fB\-o libdemo.so.1.0.1 libdemo.c\fP .EE .in .P Så konstruerer vi symbolske henvisninger for biblioteket soname og henvisingsnavnet for biblioteket: .P .in +4n .EX $ \fBln \-sf libdemo.so.1.0.1 libdemo.so.1\fP $ \fBln \-sf libdemo.so.1 libdemo.so\fP .EE .in .P Efterfølgende kompilerer vi hovedprogrammet, henviser det til det delte objekt og viser de dynamiske afhængigheder for programmet: .P .in +4n .EX $ \fBcc \-g \-o prog prog.c \-L. \-ldemo\fP $ \fBldd prog\fP linux\-vdso.so.1 => (0x00007fff86d66000) libdemo.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000) /lib64/ld\-linux\-x86\-64.so.2 (0x00007fd4dc51f000) .EE .in .P For at indhente profileringsinformation for det delte objekt definerer vi miljøvariablen \fBLD_PROFILE\fP med soname for biblioteket: .P .in +4n .EX $ \fBexport LD_PROFILE=libdemo.so.1\fP .EE .in .P Så definerer vi miljøvariablen \fBLD_PROFILE_OUTPUT\fP med stinavnet for mappen, hvor profilresultatet skal skrives, og opretter den mappe, hvis den ikke allerede findes: .P .in +4n .EX $ \fBexport LD_PROFILE_OUTPUT=$(pwd)/prof_data\fP $ \fBmkdir \-p $LD_PROFILE_OUTPUT\fP .EE .in .P \fBLD_PROFILE\fP gør at profileringsresultatet \fItilføjes\fP til resultatfilen, hvis den allerede findes, så vi sikrer, at der ikke er allerede er præprofileringsdata: .P .in +4n .EX $ \fBrm \-f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile\fP .EE .in .P Så afvikler vi programmet for at lave profileringsresultatet, der skrives til en fil i mappen angivet i \fBLD_PROFILE_OUTPUT\fP: .P .in +4n .EX $ \fBLD_LIBRARY_PATH=. ./prog\fP $ \fBls prof_data\fP libdemo.so.1.profile .EE .in .P Vi bruger så tilvalget \fBsprof \-p\fP til at oprette en flad profil med antal og krydser: .P .in +4n .EX $ \fBsprof \-p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP Flat profile: \& Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls us/call us/call name 60.00 0.06 0.06 100 600.00 consumeCpu1 40.00 0.10 0.04 1000 40.00 consumeCpu2 0.00 0.10 0.00 1 0.00 x1 0.00 0.10 0.00 1 0.00 x2 .EE .in .P Tilvalget \fBsprof \-q\fP opretter en kaldgraf: .P .in +4n .EX $ \fBsprof \-q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP \& index % time self children called name \& 0.00 0.00 100/100 x1 [1] [0] 100.0 0.00 0.00 100 consumeCpu1 [0] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1/1 [1] 0.0 0.00 0.00 1 x1 [1] 0.00 0.00 100/100 consumeCpu1 [0] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1000/1000 x2 [3] [2] 0.0 0.00 0.00 1000 consumeCpu2 [2] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 0.00 0.00 1/1 [3] 0.0 0.00 0.00 1 x2 [3] 0.00 0.00 1000/1000 consumeCpu2 [2] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- .EE .in .P Over og under, strengene »« repræsenterer identifikatorer, der er uden for det profilerede objekt (i dette eksempel er disse instanser af \fImain()\fP). .P Tilvalget \fBsprof \-c\fP opretter en list af kaldpar og antallet af deres forekomster: .P .in +4n .EX $ \fBsprof \-c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP x1 1 x1 consumeCpu1 100 x2 1 x2 consumeCpu2 1000 .EE .in .SH "SE OGSÅ" \fBgprof\fP(1), \fBldd\fP(1), \fBld.so\fP(8) .PP .SH OVERSÆTTELSE Oversættere af denne manual til dansk Joe Hansen . .PP Denne oversættelse er gratis dokumentation; læs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. .PP Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til .MT debian-l10n-danish@lists.debian.org .ME .