.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "GPROF 1" .TH GPROF 1 2025-11-10 binutils-2.45.1 GNU .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" gprof \- نمایش داده‌های پروفایل گراف فراخوانی .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" gprof [ \-[abcDhilLrsTvwxyz] ] [ \-[ABCeEfFJnNOpPqQRStZ][\fIname\fR] ] [ \-I \fIdirs\fR ] [ \-d[\fInum\fR] ] [ \-k \fIfrom/to\fR ] [ \-m \fImin\-count\fR ] [ \-R \fImap_file\fR ] [ \-t \fItable\-length\fR ] [ \-\-[no\-]annotated\-source[=\fIname\fR] ] [ \-\-[no\-]exec\-counts[=\fIname\fR] ] [ \-\-[no\-]flat\-profile[=\fIname\fR] ] [ \-\-[no\-]graph[=\fIname\fR] ] [ \-\-[no\-]time=\fIname\fR] [ \-\-all\-lines ] [ \-\-brief ] [ \-\-debug[=\fIlevel\fR] ] [ \-\-function\-ordering ] [ \-\-file\-ordering \fImap_file\fR ] [ \-\-directory\-path=\fIdirs\fR ] [ \-\-display\-unused\-functions ] [ \-\-file\-format=\fIname\fR ] [ \-\-file\-info ] [ \-\-help ] [ \-\-line ] [ \-\-inline\-file\-names ] [ \-\-min\-count=\fIn\fR ] [ \-\-no\-static ] [ \-\-print\-path ] [ \-\-separate\-files ] [ \-\-static\-call\-graph ] [ \-\-sum ] [ \-\-table\-length=\fIlen\fR ] [ \-\-traditional ] [ \-\-version ] [ \-\-width=\fIn\fR ] [ \-\-ignore\-non\-functions ] [ \-\-demangle[=\fISTYLE\fR] ] [ \-\-no\-demangle ] [\-\-external\-symbol\-table=name] [ \fIimage\-file\fR ] [ \fIprofile\-file\fR ... ].SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\f(CW\*(C`gprof\*(C'\fR یک نمایهٔ اجرایی از برنامه‌های C، Pascal یا Fortran77 تولید می‌کند. اثر روتین‌های فراخوانی‌شده در نمایهٔ هر فراخواننده لحاظ می‌شود. داده‌های نمایه از فایل نمایهٔ نمودار فراخوانی (\fIgmon.out\fR به‌طور پیش‌فرض) که توسط برنامه‌های کامپایل‌شده با گزینهٔ \fB\-pg\fR در \&\f(CW\*(C`cc\*(C'\fR، \f(CW\*(C`pc\*(C'\fR و \f(CW\*(C`f77\*(C'\fR ایجاد می‌شود، گرفته می‌شود. گزینهٔ \fB\-pg\fR همچنین نسخه‌هایی از روتین‌های کتابخانه را که برای نمایه‌سازی کامپایل شده‌اند پیوند می‌دهد. ابزار \&\f(CW\*(C`Gprof\*(C'\fR فایل شیء داده‌شده (پیش‌فرض \f(CW\*(C`a.out\*(C'\fR است) را می‌خواند و رابطهٔ میان جدول نمادهای آن و نمایهٔ نمودار فراخوانی را از \fIgmon.out\fR برقرار می‌سازد. اگر بیش از یک فایل نمایه مشخص شده باشد، خروجی \&\f(CW\*(C`gprof\*(C'\fR مجموع اطلاعات نمایه در فایل‌های نمایهٔ ارائه‌شده را نشان می‌دهد. .PP ابزار \&\f(CW\*(C`Gprof\*(C'\fR مقدار زمان صرف‌شده در هر روتین را محاسبه می‌کند. سپس، این زمان‌ها در امتداد یال‌های نمودار فراخوانی منتشر می‌شوند. چرخه‌ها شناسایی شده و فراخوانی‌ها به درون یک چرخه، در زمان آن چرخه سهیم می‌شوند. .PP چندین حالت خروجی از این تحلیل در دسترس است. .PP بخش \fIflat profile\fR (نمایهٔ مسطح) نشان می‌دهد که برنامهٔ شما چه مقدار زمان در هر تابع صرف کرده است و آن تابع چند بار فراخوانی شده است. اگر صرفاً می‌خواهید بدانید کدام توابع بیشترین چرخه‌های پردازشی را مصرف می‌کنند، در اینجا به‌طور خلاصه بیان شده است. .PP بخش \fIcall graph\fR (نمودار فراخوانی) برای هر تابع نشان می‌دهد که کدام توابع آن را فراخوانی کرده‌اند، چه توابع دیگری توسط آن فراخوانی شده‌اند، و چند بار. همچنین تخمینی از میزان زمان صرف‌شده در زیرروال‌های هر تابع ارائه می‌دهد. این امر می‌تواند مکان‌هایی را پیشنهاد دهد که شاید بخواهید فراخوانی‌های تابعی را که زمان زیادی می‌برند حذف کنید. .PP فهرست \fIannotated source\fR (منبع حاشیه‌نویسی‌شده) رونوشتی از کد منبع برنامه است که با تعداد دفعات اجرای هر خط از برنامه برچسب‌گذاری شده است. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" این گزینه‌ها مشخص می‌کنند که \&\f(CW\*(C`gprof\*(C'\fR کدام‌یک از چندین قالب خروجی را باید تولید کند. .PP بسیاری از این گزینه‌ها یک \fIsymspec\fR اختیاری دریافت می‌کنند تا توابعی را که باید گنجانده یا مستثنی شوند مشخص کنند. این گزینه‌ها را می‌توان چندین بار، با symspecهای متفاوت، برای گنجاندن یا حذف کردن مجموعه‌هایی از نمادها مشخص کرد. .PP مشخص کردن هر یک از این گزینه‌ها، حالت پیش‌فرض (\fB\-p \-q\fR) را که یک نمایهٔ مسطح و تحلیل نمودار فراخوانی برای تمام توابع چاپ می‌کند، لغو می‌نماید. .ie n .IP """\-A[\fIsymspec\fR]""" 4 .el .IP \f(CW\-A[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-A[symspec]" .PD 0 .ie n .IP """\-\-annotated\-source[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-annotated\-source[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--annotated-source[=symspec]" .PD گزینهٔ \fB\-A\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR کد منبع حاشیه‌نویسی‌شده را چاپ کند. اگر \fIsymspec\fR مشخص شده باشد، خروجی فقط برای نمادهای منطبق چاپ می‌شود. .ie n .IP """\-b""" 4 .el .IP \f(CW\-b\fR 4 .IX Item "-b" .PD 0 .ie n .IP """\-\-brief""" 4 .el .IP \f(CW\-\-brief\fR 4 .IX Item "--brief" .PD اگر گزینهٔ \fB\-b\fR داده شود، \&\f(CW\*(C`gprof\*(C'\fR توضیحات مفصلی را که سعی در تشریح معنای تمام فیلدهای جدول‌ها دارند چاپ نمی‌کند. این گزینه برای زمانی که قصد چاپ فیزیکی خروجی را دارید یا از دیدن این توضیحات خسته شده‌اید، مفید است. .ie n .IP """\-B""" 4 .el .IP \f(CW\-B\fR 4 .IX Item "-B" گزینهٔ \fB\-B\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR تحلیل نمودار فراخوانی را چاپ کند. .ie n .IP """\-C[\fIsymspec\fR]""" 4 .el .IP \f(CW\-C[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-C[symspec]" .PD 0 .ie n .IP """\-\-exec\-counts[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-exec\-counts[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--exec-counts[=symspec]" .PD گزینهٔ \fB\-C\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR شمارش توابع و تعداد دفعاتی را که هر یک فراخوانی شده‌اند چاپ کند. اگر \fIsymspec\fR مشخص شده باشد، شمارش تنها برای نمادهای منطبق چاپ می‌شود. .Sp اگر فایل داده‌های نمایه حاوی رکوردهای شمارش بلوک پایه‌ای (basic\-block) باشد، مشخص کردن گزینهٔ \fB\-l\fR در کنار \fB\-C\fR، باعث می‌شود دفعات اجرای بلوک‌های پایه‌ای شمارش شده و به نمایش درآید. .ie n .IP """\-i""" 4 .el .IP \f(CW\-i\fR 4 .IX Item "-i" .PD 0 .ie n .IP """\-\-file\-info""" 4 .el .IP \f(CW\-\-file\-info\fR 4 .IX Item "--file-info" .PD گزینهٔ \fB\-i\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR اطلاعات خلاصه‌ای را دربارهٔ فایل(های) داده‌های نمایه نمایش داده و سپس خارج شود. تعداد رکوردهای هیستوگرام، نمودار فراخوانی و شمارش بلوک پایه‌ای نمایش داده می‌شود. .ie n .IP """\-I \fIdirs\fR""" 4 .el .IP "\f(CW\-I \fR\f(CIdirs\fR\f(CW\fR" 4 .IX Item "-I dirs" .PD 0 .ie n .IP """\-\-directory\-path=\fIdirs\fR""" 4 .el .IP \f(CW\-\-directory\-path=\fR\f(CIdirs\fR\f(CW\fR 4 .IX Item "--directory-path=dirs" .PD گزینهٔ \fB\-I\fR فهرستی از دایرکتوری‌های جستجو را برای یافتن فایل‌های منبع مشخص می‌کند. از متغیر محیطی \fIGPROF_PATH\fR نیز می‌توان برای انتقال این اطلاعات استفاده کرد. کاربرد اصلی آن برای خروجی منبع حاشیه‌نویسی‌شده است. .ie n .IP """\-J[\fIsymspec\fR]""" 4 .el .IP \f(CW\-J[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-J[symspec]" .PD 0 .ie n .IP """\-\-no\-annotated\-source[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-no\-annotated\-source[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--no-annotated-source[=symspec]" .PD گزینهٔ \fB\-J\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR کد منبع حاشیه‌نویسی‌شده را چاپ نکند. اگر \fIsymspec\fR مشخص شده باشد، \&\f(CW\*(C`gprof\*(C'\fR کد منبع حاشیه‌نویسی‌شده را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد. .ie n .IP """\-L""" 4 .el .IP \f(CW\-L\fR 4 .IX Item "-L" .PD 0 .ie n .IP """\-\-print\-path""" 4 .el .IP \f(CW\-\-print\-path\fR 4 .IX Item "--print-path" .PD به‌طور معمول، نام فایل‌های منبع با حذف بخش مسیر چاپ می‌شوند. گزینهٔ \fB\-L\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR نام مسیر کامل فایل‌های منبع را چاپ کند؛ این مسیر از اطلاعات اشکال‌زدایی نمادین در فایل تصویر اجرایی تعیین می‌شود و نسبت به دایرکتوری‌ای است که کامپایلر در آن فراخوانی شده است. .ie n .IP """\-p[\fIsymspec\fR]""" 4 .el .IP \f(CW\-p[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-p[symspec]" .PD 0 .ie n .IP """\-\-flat\-profile[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-flat\-profile[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--flat-profile[=symspec]" .PD گزینهٔ \fB\-p\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR نمایهٔ مسطح را چاپ کند. اگر \fIsymspec\fR مشخص شده باشد، نمایهٔ مسطح فقط برای نمادهای منطبق چاپ می‌شود. .ie n .IP """\-P[\fIsymspec\fR]""" 4 .el .IP \f(CW\-P[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-P[symspec]" .PD 0 .ie n .IP """\-\-no\-flat\-profile[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-no\-flat\-profile[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--no-flat-profile[=symspec]" .PD گزینهٔ \fB\-P\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR از چاپ نمایهٔ مسطح صرف‌نظر کند. اگر \fIsymspec\fR مشخص شده باشد، \&\f(CW\*(C`gprof\*(C'\fR نمایهٔ مسطح را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد. .ie n .IP """\-q[\fIsymspec\fR]""" 4 .el .IP \f(CW\-q[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-q[symspec]" .PD 0 .ie n .IP """\-\-graph[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-graph[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--graph[=symspec]" .PD گزینهٔ \fB\-q\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR تحلیل نمودار فراخوانی را چاپ کند. اگر \fIsymspec\fR مشخص شده باشد، نمودار فراخوانی فقط برای نمادهای منطبق و فرزندان آن‌ها چاپ می‌شود. .ie n .IP """\-Q[\fIsymspec\fR]""" 4 .el .IP \f(CW\-Q[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-Q[symspec]" .PD 0 .ie n .IP """\-\-no\-graph[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-no\-graph[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--no-graph[=symspec]" .PD گزینهٔ \fB\-Q\fR باعث می‌شود \&\f(CW\*(C`gprof\*(C'\fR از چاپ نمودار فراخوانی صرف‌نظر کند. اگر \fIsymspec\fR مشخص شده باشد، \&\f(CW\*(C`gprof\*(C'\fR نمودار فراخوانی را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد. .ie n .IP """\-t""" 4 .el .IP \f(CW\-t\fR 4 .IX Item "-t".PD 0 .ie n .IP """\-\-table\-length=\fInum\fR""" 4 .el .IP \f(CW\-\-table\-length=\fR\f(CInum\fR\f(CW\fR 4 .IX Item "--table-length=num" .PD گزینهٔ \fB\-t\fR باعث می‌شود در صورت فعال بودن حاشیه‌نویسی منبع، \fInum\fR خط از پرکاربردترین خطوط منبع در هر فایل منبع فهرست شوند. مقدار پیش‌فرض 10 است. .ie n .IP """\-y""" 4 .el .IP \f(CW\-y\fR 4 .IX Item "-y" .PD 0 .ie n .IP """\-\-separate\-files""" 4 .el .IP \f(CW\-\-separate\-files\fR 4 .IX Item "--separate-files" .PD این گزینه تنها بر خروجی منبع حاشیه‌نویسی‌شده تأثیر می‌گذارد. به‌طور معمول، \f(CW\*(C`gprof\*(C'\fR فایل‌های منبع حاشیه‌نویسی‌شده را در خروجی استاندارد چاپ می‌کند. اگر این گزینه مشخص شود، منبع حاشیه‌نویسی‌شده برای فایلی با نام \fIpath/filename\fR در فایل \fIfilename\-ann\fR تولید می‌شود. اگر فایل‌سیستم زیربنایی \fIfilename\-ann\fR را کوتاه کند به‌طوری که بر روی \fIfilename\fR اصلی بازنویسی شود، \f(CW\*(C`gprof\*(C'\fR به جای آن منبع حاشیه‌نویسی‌شده را در فایل \fIfilename.ann\fR تولید می‌کند (اگر نام فایل اصلی دارای پسوند باشد، آن پسوند با \fI.ann\fR \fIجایگزین\fR می‌شود). .ie n .IP """\-Z[\fIsymspec\fR]""" 4 .el .IP \f(CW\-Z[\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "-Z[symspec]" .PD 0 .ie n .IP """\-\-no\-exec\-counts[=\fIsymspec\fR]""" 4 .el .IP \f(CW\-\-no\-exec\-counts[=\fR\f(CIsymspec\fR\f(CW]\fR 4 .IX Item "--no-exec-counts[=symspec]" .PD گزینهٔ \fB\-Z\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR آمار شمارش توابع و تعداد دفعاتی که هر یک فراخوانی شده‌اند را چاپ نکند. اگر \fIsymspec\fR مشخص شود، آمار چاپ می‌شود ولی نمادهای منطبق مستثنی می‌شوند. .ie n .IP """\-r""" 4 .el .IP \f(CW\-r\fR 4 .IX Item "-r" .PD 0 .ie n .IP """\-\-function\-ordering""" 4 .el .IP \f(CW\-\-function\-ordering\fR 4 .IX Item "--function-ordering" .PD گزینهٔ \fB\-\-function\-ordering\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR یک ترتیب پیشنهادی برای توابع برنامه بر اساس داده‌های پروفایل‌سازی چاپ کند. این گزینه ترتیبی را پیشنهاد می‌دهد که ممکن است رفتار صفحه‌بندی (paging)، tlb و حافظهٔ پنهان (cache) برنامه را در سیستم‌هایی که از ترتیب دلخواه توابع در یک فایل اجرایی پشتیبانی می‌کنند، بهبود بخشد. .Sp جزئیات دقیق نحوهٔ وادار کردن پیونددهنده (linker) به قرار دادن توابع در یک ترتیب خاص، وابسته به سیستم بوده و خارج از محدودهٔ این راهنما است. .ie n .IP """\-R \fImap_file\fR""" 4 .el .IP "\f(CW\-R \fR\f(CImap_file\fR\f(CW\fR" 4 .IX Item "-R map_file" .PD 0 .ie n .IP """\-\-file\-ordering \fImap_file\fR""" 4 .el .IP "\f(CW\-\-file\-ordering \fR\f(CImap_file\fR\f(CW\fR" 4 .IX Item "--file-ordering map_file" .PD گزینهٔ \fB\-\-file\-ordering\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR یک ترتیب پیشنهادی برای خط پیوند پرونده‌های .o بر اساس داده‌های پروفایل‌سازی برنامه چاپ کند. این گزینه ترتیبی را پیشنهاد می‌دهد که ممکن است رفتار صفحه‌بندی، tlb و حافظهٔ پنهان برنامه را در سیستم‌هایی که از ترتیب دلخواه توابع در یک فایل اجرایی پشتیبانی نمی‌کنند، بهبود بخشد. .Sp استفاده از آرگومان \fB\-a\fR همراه با این گزینه به‌شدت توصیه می‌شود. .Sp آرگومان \fImap_file\fR نام مسیری به یک فایل است که نگاشت نام تابع به فایل‌های شیء را فراهم می‌کند. قالب این فایل شبیه به خروجی برنامهٔ \f(CW\*(C`nm\*(C'\fR است. .Sp .Vb 8 \& c\-parse.o:00000000 T yyparse \& c\-parse.o:00000004 C yyerrflag \& c\-lang.o:00000000 T maybe_objc_method_name \& c\-lang.o:00000000 T print_lang_statistics \& c\-lang.o:00000000 T recognize_objc_keyword \& c\-decl.o:00000000 T print_lang_identifier \& c\-decl.o:00000000 T print_lang_type \& ... .Ve .Sp برای ایجاد یک \fImap_file\fR با GNU \f(CW\*(C`nm\*(C'\fR، دستوری مانند این وارد کنید: \&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR. .ie n .IP """\-T""" 4 .el .IP \f(CW\-T\fR 4 .IX Item "-T" .PD 0 .ie n .IP """\-\-traditional""" 4 .el .IP \f(CW\-\-traditional\fR 4 .IX Item "--traditional" .PD گزینهٔ \fB\-T\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR خروجی خود را در سبک «سنتی» BSD چاپ کند. .ie n .IP """\-w \fIwidth\fR""" 4 .el .IP "\f(CW\-w \fR\f(CIwidth\fR\f(CW\fR" 4 .IX Item "-w width" .PD 0 .ie n .IP """\-\-width=\fIwidth\fR""" 4 .el .IP \f(CW\-\-width=\fR\f(CIwidth\fR\f(CW\fR 4 .IX Item "--width=width" .PD عرض خطوط خروجی را روی \fIwidth\fR تنظیم می‌کند. در حال حاضر تنها هنگام چاپ نمایهٔ توابع در انتهای نمودار فراخوانی استفاده می‌شود. .ie n .IP """\-x""" 4 .el .IP \f(CW\-x\fR 4 .IX Item "-x" .PD 0 .ie n .IP """\-\-all\-lines""" 4 .el .IP \f(CW\-\-all\-lines\fR 4 .IX Item "--all-lines" .PD این گزینه تنها بر خروجی منبع حاشیه‌نویسی‌شده تأثیر می‌گذارد. به‌طور پیش‌فرض، تنها خطوط موجود در ابتدای یک بلوک پایه (basic\-block) حاشیه‌نویسی می‌شوند. اگر این گزینه مشخص شود، هر خط در یک بلوک پایه با تکرار حاشیه‌نویسی خط نخست، حاشیه‌نویسی خواهد شد. این رفتار شبیه به گزینهٔ \fB\-a\fR در \f(CW\*(C`tcov\*(C'\fR است. .ie n .IP """\-\-demangle[=\fIstyle\fR]""" 4 .el .IP \f(CW\-\-demangle[=\fR\f(CIstyle\fR\f(CW]\fR 4 .IX Item "--demangle[=style]" .PD 0 .ie n .IP """\-\-no\-demangle""" 4 .el .IP \f(CW\-\-no\-demangle\fR 4 .IX Item "--no-demangle" .PD این گزینه‌ها کنترل می‌کنند که آیا نام نمادهای ++C هنگام چاپ خروجی باید بازگردانی (demangle) شوند یا خیر. حالت پیش‌فرض، بازگردانی نمادها است. گزینهٔ \&\f(CW\*(C`\-\-no\-demangle\*(C'\fR می‌تواند برای غیرفعال کردن بازگردانی استفاده شود. کامپایلرهای گوناگون سبک‌های درهم‌سازی متفاوتی دارند. آرگومان اختیاری سبک بازگردانی می‌تواند برای انتخاب سبک بازگردانی مناسب برای کامپایلر شما به کار رود..SS "گزینه‌های تحلیل (Analysis Options)" .IX Subsection "Analysis Options" .ie n .IP """\-a""" 4 .el .IP \f(CW\-a\fR 4 .IX Item "-a" .PD 0 .ie n .IP """\-\-no\-static""" 4 .el .IP \f(CW\-\-no\-static\fR 4 .IX Item "--no-static" .PD گزینهٔ \fB\-a\fR باعث می‌شود که \f(CW\*(C`gprof\*(C'\fR از چاپ توابع تعریف‌شده به‌صورت ایستا (خصوصی) صرف‌نظر کند. (این‌ها توابعی هستند که نامشان به‌صورت سراسری فهرست نشده است و در خارج از فایل/تابع/بلوکی که در آن تعریف شده‌اند، قابل مشاهده نیستند.) زمان صرف‌شده در این توابع، فراخوانی‌ها به/از آن‌ها و موارد مشابه، همگی به تابعی نسبت داده می‌شوند که در فایل اجرایی دقیقاً پیش از آن بارگذاری شده است. این گزینه هم بر نمایهٔ مسطح و هم بر گراف فراخوانی تأثیر می‌گذارد. .ie n .IP """\-c""" 4 .el .IP \f(CW\-c\fR 4 .IX Item "-c" .PD 0 .ie n .IP """\-\-static\-call\-graph""" 4 .el .IP \f(CW\-\-static\-call\-graph\fR 4 .IX Item "--static-call-graph" .PD گزینهٔ \fB\-c\fR باعث می‌شود که گراف فراخوانی برنامه به کمک یک روش اکتشافی (heuristic) تقویت شود؛ روشی که فضای متنی (text space) فایل شیء را بررسی کرده و فراخوانی‌های توابع را در کد ماشین دودویی شناسایی می‌کند. از آنجا که رکوردهای معمول گراف فراخوانی تنها هنگام ورود به توابع تولید می‌شوند، این گزینه فرزندانی را شناسایی می‌کند که ممکن بود فراخوانی شوند، اما هرگز فراخوانی نشده‌اند. فراخوانی‌های توابعی که بدون فعال‌سازی قابلیت نمایه‌سازی (profiling) کامپایل شده‌اند نیز شناسایی می‌شوند، اما فقط در صورتی که مدخل‌های جدول نمادها برای آن‌ها موجود باشد. فراخوانی توابع روتین کتابخانه‌های پویا معمولاً توسط این گزینه پیدا \fIنمی‌شوند\fR. والدین یا فرزندانی که از طریق این روش اکتشافی شناسایی می‌شوند، در گراف فراخوانی با تعداد فراخوانی \fB0\fR نشان داده می‌شوند. .ie n .IP """\-D""" 4 .el .IP \f(CW\-D\fR 4 .IX Item "-D" .PD 0 .ie n .IP """\-\-ignore\-non\-functions""" 4 .el .IP \f(CW\-\-ignore\-non\-functions\fR 4 .IX Item "--ignore-non-functions" .PD گزینهٔ \fB\-D\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR نمادهایی را که به‌عنوان تابع شناخته نمی‌شوند نادیده بگیرد. این گزینه در سیستم‌هایی که از آن پشتیبانی می‌کنند (برای مثال Solaris و HPUX) داده‌های نمایه‌سازی دقیق‌تری ارائه می‌دهد. .ie n .IP """\-k \fIfrom\fR/\fIto\fR""" 4 .el .IP "\f(CW\-k \fR\f(CIfrom\fR\f(CW/\fR\f(CIto\fR\f(CW\fR" 4 .IX Item "-k from/to" گزینهٔ \fB\-k\fR به شما اجازه می‌دهد تا هر یالی را در گراف فراخوانی از نمادهای منطبق با مشخصهٔ نماد \fIfrom\fR به نمادهای منطبق با مشخصهٔ نماد \fIto\fR حذف کنید. .ie n .IP """\-l""" 4 .el .IP \f(CW\-l\fR 4 .IX Item "-l" .PD 0 .ie n .IP """\-\-line""" 4 .el .IP \f(CW\-\-line\fR 4 .IX Item "--line" .PD گزینهٔ \fB\-l\fR نمایه‌سازی خط به خط را فعال می‌کند، که باعث می‌شود رخدادهای هیستوگرام به‌جای توابع، به خطوط مجزای کد منبع نسبت داده شوند. این ویژگی تنها با برنامه‌هایی کار می‌کند که توسط نسخه‌های قدیمی‌تر کامپایلر \f(CW\*(C`gcc\*(C'\fR کامپایل شده باشند. نسخه‌های جدیدتر \f(CW\*(C`gcc\*(C'\fR به‌گونه‌ای طراحی شده‌اند که در عوض با ابزار \f(CW\*(C`gcov\*(C'\fR کار کنند. .Sp اگر برنامه با فعال بودن شمارش بلوک‌های پایه (basic\-block counting) کامپایل شده باشد، این گزینه همچنین مشخص می‌کند که هر خط از کد چند بار اجرا شده است. اگرچه نمایه‌سازی خط به خط می‌تواند به جداسازی و مشخص کردن بخش‌هایی از یک تابع بزرگ که برنامه زمان خود را در آن صرف می‌کند کمک کند، اما زمان اجرای \f(CW\*(C`gprof\*(C'\fR را نیز به‌طور قابل‌توجهی افزایش داده و خطاهای آماری را بزرگ‌نمایی می‌کند. .ie n .IP """\-\-inline\-file\-names""" 4 .el .IP \f(CW\-\-inline\-file\-names\fR 4 .IX Item "--inline-file-names" این گزینه باعث می‌شود \f(CW\*(C`gprof\*(C'\fR نام فایل منبع را پس از هر نماد، هم در نمایهٔ مسطح و هم در گراف فراخوانی چاپ کند. در صورت استفاده همراه با گزینهٔ \fB\-L\fR، مسیر کامل فایل چاپ خواهد شد. .ie n .IP """\-m \fInum\fR""" 4 .el .IP "\f(CW\-m \fR\f(CInum\fR\f(CW\fR" 4 .IX Item "-m num" .PD 0 .ie n .IP """\-\-min\-count=\fInum\fR""" 4 .el .IP \f(CW\-\-min\-count=\fR\f(CInum\fR\f(CW\fR 4 .IX Item "--min-count=num" .PD این گزینه تنها بر خروجی تعداد دفعات اجرا تأثیر می‌گذارد. نمادهایی که کمتر از \fInum\fR بار اجرا شده باشند نادیده گرفته می‌شوند. .ie n .IP """\-n\fIsymspec\fR""" 4 .el .IP \f(CW\-n\fR\f(CIsymspec\fR\f(CW\fR 4 .IX Item "-nsymspec" .PD 0 .ie n .IP """\-\-time=\fIsymspec\fR""" 4 .el .IP \f(CW\-\-time=\fR\f(CIsymspec\fR\f(CW\fR 4 .IX Item "--time=symspec" .PD گزینهٔ \fB\-n\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR در تحلیل گراف فراخوانی خود، زمان‌ها را تنها برای نمادهای منطبق با \fIsymspec\fR انتشار دهد. .ie n .IP """\-N\fIsymspec\fR""" 4 .el .IP \f(CW\-N\fR\f(CIsymspec\fR\f(CW\fR 4 .IX Item "-Nsymspec" .PD 0 .ie n .IP """\-\-no\-time=\fIsymspec\fR""" 4 .el .IP \f(CW\-\-no\-time=\fR\f(CIsymspec\fR\f(CW\fR 4 .IX Item "--no-time=symspec" .PD گزینهٔ \fB\-N\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR در تحلیل گراف فراخوانی خود، زمان‌ها را برای نمادهای منطبق با \fIsymspec\fR انتشار ندهد. .ie n .IP """\-S\fIfilename\fR""" 4 .el .IP \f(CW\-S\fR\f(CIfilename\fR\f(CW\fR 4 .IX Item "-Sfilename" .PD 0 .ie n .IP """\-\-external\-symbol\-table=\fIfilename\fR""" 4 .el .IP \f(CW\-\-external\-symbol\-table=\fR\f(CIfilename\fR\f(CW\fR 4 .IX Item "--external-symbol-table=filename" .PD گزینهٔ \fB\-S\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR به‌جای خواندن جدول نمادها از فایل شیء داده‌شده (پیش‌فرض \f(CW\*(C`a.out\*(C'\fR است)، یک فایل جدول نمادهای خارجی مانند \fI/proc/kallsyms\fR را بخواند. این ویژگی برای نمایه‌سازی ماژول‌های هسته مفید است. .ie n .IP """\-z""" 4 .el .IP \f(CW\-z\fR 4 .IX Item "-z" .PD 0 .ie n .IP """\-\-display\-unused\-functions""" 4 .el .IP \f(CW\-\-display\-unused\-functions\fR 4 .IX Item "--display-unused-functions" .PD اگر گزینهٔ \fB\-z\fR را مشخص کنید، \f(CW\*(C`gprof\*(C'\fR تمام توابع را در نمایهٔ مسطح ذکر می‌کند؛ حتی آن‌هایی که هرگز فراخوانی نشده‌اند و هیچ زمانی در آن‌ها صرف نشده است. این ویژگی در ترکیب با گزینهٔ \fB\-c\fR برای یافتن روتین‌هایی که هرگز فراخوانی نشده‌اند مفید است..SS "گزینه‌های متفرقه (Miscellaneous Options)" .IX Subsection "Miscellaneous Options" .ie n .IP """\-d[\fInum\fR]""" 4 .el .IP \f(CW\-d[\fR\f(CInum\fR\f(CW]\fR 4 .IX Item "-d[num]" .PD 0 .ie n .IP """\-\-debug[=\fInum\fR]""" 4 .el .IP \f(CW\-\-debug[=\fR\f(CInum\fR\f(CW]\fR 4 .IX Item "--debug[=num]" .PD گزینهٔ \fB\-d\fR \fInum\fR گزینه‌های اشکال‌زدایی را مشخص می‌کند. اگر \fInum\fR تعیین نشود، همهٔ حالت‌های اشکال‌زدایی فعال می‌شوند. .ie n .IP """\-h""" 4 .el .IP \f(CW\-h\fR 4 .IX Item "-h" .PD 0 .ie n .IP """\-\-help""" 4 .el .IP \f(CW\-\-help\fR 4 .IX Item "--help" .PD گزینهٔ \fB\-h\fR راهنمای استفاده در خط فرمان را چاپ می‌کند. .ie n .IP """\-O\fIname\fR""" 4 .el .IP \f(CW\-O\fR\f(CIname\fR\f(CW\fR 4 .IX Item "-Oname" .PD 0 .ie n .IP """\-\-file\-format=\fIname\fR""" 4 .el .IP \f(CW\-\-file\-format=\fR\f(CIname\fR\f(CW\fR 4 .IX Item "--file-format=name" .PD قالب فایل‌های داده‌های پروفایل را انتخاب می‌کند. قالب‌های شناخته‌شده عبارت‌اند از \&\fBauto\fR (پیش‌فرض)، \fBbsd\fR، \fB4.4bsd\fR، \fBmagic\fR و \&\fBprof\fR (هنوز پشتیبانی نمی‌شود). .ie n .IP """\-s""" 4 .el .IP \f(CW\-s\fR 4 .IX Item "-s" .PD 0 .ie n .IP """\-\-sum""" 4 .el .IP \f(CW\-\-sum\fR 4 .IX Item "--sum" .PD گزینهٔ \fB\-s\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR اطلاعات فایل‌های داده‌های پروفایل خوانده‌شده را خلاصه کرده و یک فایل داده‌های پروفایل به نام \fIgmon.sum\fR بنویسد که شامل تمام اطلاعات فایل‌های داده‌های پروفایل خوانده‌شده توسط \f(CW\*(C`gprof\*(C'\fR است. فایل \fIgmon.sum\fR می‌تواند یکی از فایل‌های ورودی مشخص‌شده باشد؛ اثر این کار، ادغام داده‌های سایر فایل‌های ورودی در \fIgmon.sum\fR خواهد بود. .Sp در نهایت می‌توانید \f(CW\*(C`gprof\*(C'\fR را دوباره بدون \fB\-s\fR اجرا کنید تا داده‌های تجمیعی درون فایل \fIgmon.sum\fR را تحلیل کند. .ie n .IP """\-v""" 4 .el .IP \f(CW\-v\fR 4 .IX Item "-v" .PD 0 .ie n .IP """\-\-version""" 4 .el .IP \f(CW\-\-version\fR 4 .IX Item "--version" .PD پرچم \fB\-v\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR شمارهٔ نسخهٔ فعلی را چاپ کرده و سپس خارج شود. .SS "گزینه‌های منسوخ‌شده (Deprecated Options)" .IX Subsection "Deprecated Options" این گزینه‌ها با نسخه‌های جدیدتری که از symspecs استفاده می‌کنند جایگزین شده‌اند. .ie n .IP """\-e \fIfunction_name\fR""" 4 .el .IP "\f(CW\-e \fR\f(CIfunction_name\fR\f(CW\fR" 4 .IX Item "-e function_name" گزینهٔ \fB\-e\fR \fIfunction\fR به \f(CW\*(C`gprof\*(C'\fR اعلام می‌کند که اطلاعات مربوط به تابع \fIfunction_name\fR (و فرزندان آن...) را در گراف فراخوانی چاپ نکند. این تابع همچنان به‌عنوان فرزند هر تابعی که آن را فراخوانی کرده باشد فهرست می‌شود، اما شمارهٔ اندیس آن به‌صورت \fB[not printed]\fR نمایش خواهد یافت. می‌توان بیش از یک گزینهٔ \fB\-e\fR مشخص کرد؛ با هر گزینهٔ \fB\-e\fR تنها یک \fIfunction_name\fR می‌تواند تعیین شود. .ie n .IP """\-E \fIfunction_name\fR""" 4 .el .IP "\f(CW\-E \fR\f(CIfunction_name\fR\f(CW\fR" 4 .IX Item "-E function_name" گزینهٔ \f(CW\*(C`\-E \fR\f(CIfunction\fR\f(CW\*(C'\fR مانند گزینهٔ \f(CW\*(C`\-e\*(C'\fR عمل می‌کند، با این تفاوت که زمان صرف‌شده در تابع (و فرزندانی که از هیچ‌جای دیگری فراخوانی نشده‌اند)، در محاسبهٔ درصدهای زمانی گراف فراخوانی به کار نخواهد رفت. می‌توان بیش از یک گزینهٔ \fB\-E\fR مشخص کرد؛ با هر گزینهٔ \fB\-E\fR تنها یک \&\fIfunction_name\fR می‌تواند تعیین شود. .ie n .IP """\-f \fIfunction_name\fR""" 4 .el .IP "\f(CW\-f \fR\f(CIfunction_name\fR\f(CW\fR" 4 .IX Item "-f function_name" گزینهٔ \fB\-f\fR \fIfunction\fR باعث می‌شود \f(CW\*(C`gprof\*(C'\fR گراف فراخوانی را به تابع \fIfunction_name\fR و فرزندان آن (و فرزندان فرزندانشان...) محدود کند. می‌توان بیش از یک گزینهٔ \fB\-f\fR مشخص کرد؛ با هر گزینهٔ \fB\-f\fR تنها یک \fIfunction_name\fR می‌تواند تعیین شود. .ie n .IP """\-F \fIfunction_name\fR""" 4 .el .IP "\f(CW\-F \fR\f(CIfunction_name\fR\f(CW\fR" 4 .IX Item "-F function_name" گزینهٔ \fB\-F\fR \fIfunction\fR مانند گزینهٔ \f(CW\*(C`\-f\*(C'\fR عمل می‌کند، اما تنها زمان صرف‌شده در تابع و فرزندان آن (و فرزندان فرزندانشان...) برای تعیین زمان کل و درصدهای زمانی گراف فراخوانی به کار خواهد رفت. می‌توان بیش از یک گزینهٔ \fB\-F\fR مشخص کرد؛ با هر گزینهٔ \&\fB\-F\fR تنها یک \fIfunction_name\fR می‌تواند تعیین شود. گزینهٔ \fB\-F\fR اولویت بالاتری نسبت به گزینهٔ \fB\-E\fR داشته و آن را لغو می‌کند..SH "فایل‌ها (FILES)" .IX Header "FILES" .ie n .IP """\fIa.out\fR""" 4 .el .IP \f(CW\fR\f(CIa.out\fR\f(CW\fR 4 .IX Item "a.out" فهرست نام‌ها و فضای کد. .ie n .IP """\fIgmon.out\fR""" 4 .el .IP \f(CW\fR\f(CIgmon.out\fR\f(CW\fR 4 .IX Item "gmon.out" گراف فراخوانی پویا و پروفایل. .ie n .IP """\fIgmon.sum\fR""" 4 .el .IP \f(CW\fR\f(CIgmon.sum\fR\f(CW\fR 4 .IX Item "gmon.sum" خلاصهٔ گراف فراخوانی پویا و پروفایل. .SH "گزارش باگ‌ها (BUGS)" .IX Header "BUGS" ریزبینایی (granularity) نمونه‌برداری نشان داده می‌شود، اما در بهترین حالت ماهیتی آماری دارد. فرض بر این است که زمان هر بار اجرای یک تابع را می‌توان از طریق تقسیم زمان کل تابع بر تعداد دفعات فراخوانی آن به دست آورد. بنابراین، زمانی که در امتداد یال‌های گراف فراخوانی به والدهای تابع منتقل می‌شود، مستقیماً متناسب با تعداد دفعات پیمایش آن یال است. .PP والدهایی که خودشان پروفایل‌سازی نشده‌اند، زمان فرزندان پروفایل‌شدهٔ آن‌ها به ایشان منتقل خواهد شد، اما در فهرست گراف فراخوانی به‌نظر می‌رسد که به طور خودبه‌خودی فراخوانی شده‌اند و زمان آن‌ها فراتر از این منتقل نخواهد شد. به همین ترتیب، گیرنده‌های سیگنال (signal catchers)، حتی با وجود پروفایل‌سازی، خودبه‌خودی به‌نظر خواهند رسید (اگرچه به دلایلی مبهم‌تر). زمان هر فرزند پروفایل‌شدهٔ گیرنده‌های سیگنال باید به‌درستی منتقل شود، مگر این‌که گیرندهٔ سیگنال در حین اجرای روال پروفایل‌سازی فراخوانی شده باشد، که در این حالت همه‌چیز از دست می‌رود. .PP برنامهٔ پروفایل‌شده باید \f(CW\*(C`exit\*(C'\fR(2) را فراخوانی کند یا به طور عادی خاتمه یابد تا اطلاعات پروفایل‌سازی در فایل \fIgmon.out\fR ذخیره شوند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBmonitor\fR\|(3)، \fBprofil\fR\|(2)، \fBcc\fR\|(1)، \fBprof\fR\|(1) و مدخل Info برای \fIgprof\fR. .PP "An Execution Profiler for Modular Programs", نوشتهٔ S. Graham, P. Kessler, M. McKusick; Software \- Practice and Experience, Vol. 13, pp. 671\-685, 1983. .PP "gprof: A Call Graph Execution Profiler", نوشتهٔ S. Graham, P. Kessler, M. McKusick; Proceedings of the SIGPLAN \*(Aq82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120\-126, June 1982. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" Copyright (c) 1988\-2025 Free Software Foundation, Inc. .PP اجازهٔ نسخه‌برداری، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ متأخر دیگری که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» قرار داده شده است.