.\" -*- 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 مقدار زمان صرف‌شده در هر روتین را محاسبه می‌کند. سپس این زمان‌ها در امتداد یال‌های گراف فراخوانی انتشار می‌یابند. چرخه‌ها (cycles) شناسایی می‌شوند و فراخوانی‌های درون یک چرخه به گونه‌ای تنظیم می‌گردند که در زمان آن چرخه سهیم باشند. .PP چندین قالب خروجی از این تحلیل در دسترس است. .PP گزارش \fIپروفایل مسطح (flat profile)\fR نشان می‌دهد که برنامهٔ شما چقدر زمان در هر تابع صرف کرده است و آن تابع چند بار فراخوانی شده است. اگر صرفاً می‌خواهید بدانید کدام توابع بیشترین چرخه‌های پردازشی را مصرف می‌کنند، در اینجا به‌طور خلاصه بیان شده است. .PP گزارش \fIگراف فراخوانی (call graph)\fR برای هر تابع نشان می‌دهد چه توابعی آن را فراخوانی کرده‌اند، آن تابع چه توابع دیگری را فراخوانی کرده و این کار چند بار انجام شده است. همچنین تخمینی از زمان صرف‌شده در زیرروال‌های هر تابع ارائه می‌شود. این گزارش می‌تواند نقاطی را پیشنهاد دهد که شاید بخواهید فراخوانی‌های زمان‌بر توابع را در آن‌ها حذف کنید. .PP فهرست \fIکد منبع نشانه‌گذاری‌شده (annotated 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 پیشنهادی را برای برنامه چاپ کند. این گزینه ترتیبی را پیشنهاد می‌کند که ممکن است رفتار صفحه‌بندی (paging)، tlb و حافظهٔ نهان (cache) را در سیستم‌هایی که از ترتیب دلخواه توابع در فایل اجرایی پشتیبانی نمی‌کنند، بهبود ببخشد. .Sp استفاده از آرگومان \fB\-a\fR همراه با این گزینه اکیداً توصیه می‌شود. .Sp آرگومان \fImap_file\fR مسیر فایلی است که نگاشت نام تابع به فایل‌های شیء (object file) را ارائه می‌دهد. قالب این فایل شبیه به خروجی برنامهٔ \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 تنظیم می‌کند. در حال حاضر تنها هنگام چاپ نمایهٔ توابع در پایین نمودار فراخوانی (call graph) استفاده می‌شود. .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 (تبدیل به نام اصلی و خوانا) شوند یا خیر. حالت پیش‌فرض، demangle کردن نمادها است. گزینهٔ \&\f(CW\*(C`\-\-no\-demangle\*(C'\fR می‌تواند برای غیرفعال کردن فرایند demangle استفاده شود. کامپایلرهای مختلف شیوه‌های متفاوتی برای دستکاری نام (mangling) دارند. از آرگومان اختیاری شیوهٔ demangling می‌توان برای انتخاب شیوهٔ مناسب کامپایلر خود استفاده کرد..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 باعث می‌شود گراف فراخوانی برنامه با یک روش ابتکاری تکمیل شود که فضای متنی فایل شیء را بررسی کرده و فراخوانی‌های تابع را در کد ماشین باینری شناسایی می‌کند. از آنجا که رکوردهای عادی گراف فراخوانی تنها هنگام ورود به توابع تولید می‌شوند، این گزینه فرزندانی را شناسایی می‌کند که ممکن بود فراخوانی شوند، اما هرگز فراخوانی نشدند. فراخوانی‌های توابعی که با پروفایل‌سازی فعال کامپایل نشده‌اند نیز شناسایی می‌شوند، اما تنها در صورتی که ورودی‌های جدول نماد برای آن‌ها وجود داشته باشد. فراخوانی‌های روال‌های کتابخانهٔ پویا معمولاً توسط این گزینه پیدا \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 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" ریزه‌دانگی نمونه‌برداری نمایش داده می‌شود، اما در بهترین حالت ماهیتی آماری دارد. فرض بر این است که زمان هر بار اجرای یک تابع را می‌توان به‌صورت زمان کل تابع تقسیم بر تعداد دفعات فراخوانی آن بیان کرد. بنابراین زمانی که در امتداد کمان‌های گراف فراخوانی به والدین تابع منتقل می‌شود، با تعداد دفعات پیمایش آن کمان نسبت مستقیم دارد. .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)، نسخهٔ 1.3 یا هر نسخهٔ متأخر دیگری که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است داده می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.