.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.47) .\" .\" 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 2026-07-26 binutils-2.47 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 خط از فعال‌ترین خطوط کد در هر فایل منبع فهرست شوند. مقدار پیش‌فرض ۱۰ است. .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 می‌توان برای خاموش کردن رمزگشایی استفاده کرد. کامپایلرهای مختلف روش‌های رمزگذاری متفاوتی دارند. آرگومان اختیاری شیوهٔ رمزگشایی (style) می‌تواند برای انتخاب روش رمزگشایی مناسب کامپایلر شما به کار رود..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 از چاپ توابعی که به‌صورت ایستا (private) اعلان شده‌اند صرف‌نظر کند. (این‌ها توابعی هستند که نامشان به‌صورت سراسری فهرست نشده است و در خارج از فایل/تابع/بلوکی که در آن تعریف شده‌اند، قابل مشاهده نیستند.) زمان صرف‌شده در این توابع، فراخوانی‌ها به/از آن‌ها و غیره، همگی به تابعی نسبت داده می‌شوند که در فایل اجرایی مستقیماً پیش از آن بارگذاری شده است. این گزینه هم بر نمایه مسطح (flat profile) و هم بر گراف فراخوانی (call graph) اثر می‌گذارد. .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) گسترش یابد که فضای متنی فایل شیء را بررسی کرده و فراخوانی‌های توابع را در کد ماشین دودویی شناسایی می‌کند. از آنجا که رکوردهای عادی گراف فراخوانی تنها هنگام ورود به توابع تولید می‌شوند، این گزینه فرزندانی را شناسایی می‌کند که ممکن بود فراخوانی شوند، اما هرگز فراخوانی نشدند. فراخوانی‌های مربوط به توابعی که بدون فعال بودن نمایه‌سازی (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 به شما اجازه می‌دهد هر یالی را در گراف فراخوانی از نمادهای منطبق با symspec \fIfrom\fR به نمادهای منطبق با symspec \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) کامپایل شده باشد، این گزینه همچنین تعداد دفعات اجرای هر خط کد را مشخص می‌کند. گرچه نمایه‌سازی خط‌به‌خط می‌تواند به شناسایی این‌که برنامه در کجای یک تابع بزرگ زمان خود را صرف می‌کند کمک کند، اما زمان اجرای \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" فهرست نام‌ها (namelist) و فضای متن (text space). .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" میزان تفکیک‌پذیری نمونه‌برداری نشان داده می‌شود، اما در بهترین حالت آماری باقی می‌ماند. فرض بر این است که زمان هر بار اجرای یک تابع را می‌توان با تقسیم زمان کل تابع بر تعداد دفعات فراخوانی آن بیان کرد. بنابراین زمانی که در امتداد یال‌های گراف فراخوانی به والدین تابع منتقل می‌شود، مستقیماً متناسب با تعداد دفعاتی است که آن یال پیموده شده است. .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\-2026 Free Software Foundation, Inc. .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ متأخر دیگری که توسط بنیاد نرم‌افزار آزاد (Free Software Foundation) منتشر شده باشد، داده می‌شود؛ بدون بخش‌های ناوردا (Invariant Sections)، بدون متن‌های روی جلد (Front\-Cover Texts)، و بدون متن‌های پشت جلد (Back\-Cover Texts). یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.