GPROF(1) GNU GPROF(1)

gprof - نمایش داده‌های تحلیل کارایی گراف فراخوانی

gprof [ -[abcDhilLrsTvwxyz] ] [ -[ABCeEfFJnNOpPqQRStZ][name] ]
[ -I dirs ] [ -d[num] ] [ -k from/to ]
[ -m min-count ] [ -R map_file ] [ -t table-length ]
[ --[no-]annotated-source[=name] ]
[ --[no-]exec-counts[=name] ]
[ --[no-]flat-profile[=name] ] [ --[no-]graph[=name] ]
[ --[no-]time=name] [ --all-lines ] [ --brief ]
[ --debug[=level] ] [ --function-ordering ]
[ --file-ordering map_file ] [ --directory-path=dirs ]
[ --display-unused-functions ] [ --file-format=name ]
[ --file-info ] [ --help ] [ --line ] [ --inline-file-names ]
[ --min-count=n ] [ --no-static ] [ --print-path ]
[ --separate-files ] [ --static-call-graph ] [ --sum ]
[ --table-length=len ] [ --traditional ] [ --version ]
[ --width=n ] [ --ignore-non-functions ]
[ --demangle[=STYLE] ] [ --no-demangle ]
[--external-symbol-table=name]
[ image-file ] [ profile-file ... ]

دستور "gprof" یک نمایه یا پروفایل اجرایی از برنامه‌های C، Pascal یا Fortran77 تولید می‌کند. اثر روتین‌های فراخوانی‌شده در پروفایل هر فراخواننده اعمال می‌شود. داده‌های پروفایل از فایل پروفایل گراف فراخوانی (به‌طور پیش‌فرض gmon.out) گرفته می‌شوند که توسط برنامه‌های کامپایل‌شده با گزینهٔ -pg در "cc"، "pc" و "f77" ایجاد می‌گردد. گزینهٔ -pg همچنین نسخه‌هایی از روتین‌های کتابخانه‌ای را که برای تحلیل پروفایل کامپایل شده‌اند پیوند (link) می‌دهد. دستور "Gprof" فایل شیء (object file) ارائه‌شده (پیش‌فرض "a.out" است) را می‌خواند و ارتباط میان جدول نمادهای آن و پروفایل گراف فراخوانی را از gmon.out برقرار می‌سازد. چنانچه بیش از یک فایل پروفایل مشخص شود، خروجی "gprof" مجموع اطلاعات پروفایل در فایل‌های داده‌شده را نمایش می‌دهد.

دستور "Gprof" مقدار زمان سپری‌شده در هر روتین را محاسبه می‌کند. سپس، این زمان‌ها در امتداد یال‌های گراف فراخوانی منتشر می‌شوند. چرخه‌ها (cycles) شناسایی شده و فراخوانی‌های درون یک چرخه در زمان آن چرخه سهیم می‌شوند.

اشکال متعددی از خروجی بر اساس این تحلیل در دسترس است.

بخش flat profile نشان می‌دهد که برنامهٔ شما چه مقدار زمان در هر تابع صرف کرده و آن تابع چند بار فراخوانی شده است. اگر فقط می‌خواهید بدانید کدام توابع بیشترین چرخه‌های پردازشی را مصرف کرده‌اند، در این بخش به‌طور خلاصه بیان شده است.

بخش call graph برای هر تابع نشان می‌دهد چه توابعی آن را فراخوانی کرده‌اند، چه توابع دیگری را فراخوانی کرده و این عمل چند بار تکرار شده است. همچنین تخمینی از میزان زمان سپری‌شده در زیرروال‌های هر تابع ارائه می‌شود. این بخش می‌تواند نقاطی را به شما پیشنهاد دهد که ممکن است بخواهید فراخوانی‌های زمان‌بر توابع را در آن‌ها حذف کنید.

فهرست annotated source یک رونوشت از کد منبع برنامه است که با تعداد دفعات اجرای هر خط از برنامه برچسب‌گذاری شده است..SH "گزینه‌ها (OPTIONS)" این گزینه‌ها مشخص می‌کنند که "gprof" باید کدام‌یک از چندین قالب خروجی را تولید کند.

بسیاری از این گزینه‌ها یک symspec اختیاری برای تعیین توابعی که باید گنجانده یا مستثنی شوند دریافت می‌کنند. این گزینه‌ها را می‌توان چندین بار با symspecهای مختلف مشخص کرد تا مجموعه‌هایی از نمادها شامل یا مستثنی شوند.

مشخص کردن هر یک از این گزینه‌ها مقدار پیش‌فرض (-p -q) را که چاپ پروفایل تخت و تحلیل نمودار فراخوانی برای تمام توابع است، لغو می‌کند.

"-A[symspec]"
"--annotated-source[=symspec]"
گزینهٔ -A باعث می‌شود "gprof" کد منبع حاشیه‌نویسی‌شده را چاپ کند. اگر symspec مشخص شده باشد، خروجی تنها برای نمادهای منطبق چاپ می‌شود.
"-b"
"--brief"
اگر گزینهٔ -b داده شود، "gprof" توضیحات پرگویی را که سعی در بیان معنای تمام فیلدهای جدول‌ها دارند چاپ نمی‌کند. این گزینه هنگامی که قصد چاپ خروجی را دارید یا از دیدن این توضیحات خسته شده‌اید، مفید است.
"-B"
گزینهٔ -B باعث می‌شود "gprof" تحلیل نمودار فراخوانی را چاپ کند.
"-C[symspec]"
"--exec-counts[=symspec]"
گزینهٔ -C باعث می‌شود "gprof" شمارشی از توابع و تعداد دفعاتی که هر یک فراخوانی شده‌اند را چاپ کند. اگر symspec مشخص شده باشد، شمارش تنها برای نمادهای منطبق چاپ می‌شود.

اگر فایل داده‌های پروفایل شامل رکوردهای شمارش بلوک‌های پایه (basic-block) باشد، مشخص کردن گزینهٔ -l به همراه -C موجب شمارش و نمایش تعداد دفعات اجرای بلوک‌های پایه خواهد شد.

"-i"
"--file-info"
گزینهٔ -i باعث می‌شود "gprof" اطلاعات خلاصه‌ای را دربارهٔ فایل(های) داده‌های پروفایل نمایش داده و سپس خارج شود. تعداد رکوردهای هیستوگرام، نمودار فراخوانی و شمارش بلوک‌های پایه نمایش داده می‌شود.
"-I dirs"
"--directory-path=dirs"
گزینهٔ -I فهرستی از دایرکتوری‌های جستجو را برای یافتن فایل‌های منبع مشخص می‌کند. از متغیر محیطی GPROF_PATH نیز می‌توان برای انتقال این اطلاعات استفاده کرد. عمدتاً برای خروجی منبع حاشیه‌نویسی‌شده به کار می‌رود.
"-J[symspec]"
"--no-annotated-source[=symspec]"
گزینهٔ -J باعث می‌شود "gprof" کد منبع حاشیه‌نویسی‌شده را چاپ نکند. اگر symspec مشخص شده باشد، "gprof" منبع حاشیه‌نویسی‌شده را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد.
"-L"
"--print-path"
در حالت عادی، نام فایل‌های منبع بدون مؤلفهٔ مسیر چاپ می‌شوند. گزینهٔ -L باعث می‌شود "gprof" نام مسیر کامل فایل‌های منبع را چاپ کند که از اطلاعات اشکال‌زدایی نمادین در فایل ایمیج تعیین می‌شود و نسبت به دایرکتوری‌ای است که کامپایلر در آن فراخوانی شده بود.
"-p[symspec]"
"--flat-profile[=symspec]"
گزینهٔ -p باعث می‌شود "gprof" یک پروفایل تخت چاپ کند. اگر symspec مشخص شده باشد، پروفایل تخت تنها برای نمادهای منطبق چاپ می‌شود.
"-P[symspec]"
"--no-flat-profile[=symspec]"
گزینهٔ -P چاپ پروفایل تخت توسط "gprof" را متوقف می‌کند. اگر symspec مشخص شده باشد، "gprof" پروفایل تخت را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد.
"-q[symspec]"
"--graph[=symspec]"
گزینهٔ -q باعث می‌شود "gprof" تحلیل نمودار فراخوانی را چاپ کند. اگر symspec مشخص شده باشد، نمودار فراخوانی تنها برای نمادهای منطبق و فرزندان آن‌ها چاپ می‌شود.
"-Q[symspec]"
"--no-graph[=symspec]"
گزینهٔ -Q از چاپ نمودار فراخوانی توسط "gprof" جلوگیری می‌کند. اگر symspec مشخص شده باشد، "gprof" نمودار فراخوانی را چاپ می‌کند، اما نمادهای منطبق را مستثنی می‌سازد.
"-t"
"--table-length=num"
گزینهٔ -t باعث می‌شود در زمان فعال بودن حاشیه‌نویسی منبع، num خط از فعال‌ترین خطوط در هر فایل منبع فهرست شوند. مقدار پیش‌فرض ۱۰ است.
"-y"
"--separate-files"
این گزینه فقط بر خروجی منبع حاشیه‌نویسی‌شده تأثیر می‌گذارد. به‌طور معمول، "gprof" فایل‌های منبع حاشیه‌نویسی‌شده را در خروجی استاندارد چاپ می‌کند. اگر این گزینه مشخص شود، منبع حاشیه‌نویسی‌شده برای فایلی با نام path/filename در فایل filename-ann تولید می‌شود. چنانچه سیستم فایل زیرین نام filename-ann را به گونه‌ای کوتاه کند که روی filename اصلی بازنویسی شود، "gprof" در عوض منبع حاشیه‌نویسی‌شده را در فایل filename.ann تولید می‌کند (اگر نام فایل اصلی دارای پسوند باشد، آن پسوند با .ann جایگزین می‌شود).
"-Z[symspec]"
"--no-exec-counts[=symspec]"
گزینهٔ -Z باعث می‌شود "gprof" شمارش توابع و تعداد دفعات فراخوانی هر یک را چاپ نکند. اگر symspec مشخص شده باشد، شمارش چاپ می‌شود، اما نمادهای منطبق مستثنی می‌گردند.
"-r"
"--function-ordering"
گزینهٔ --function-ordering باعث می‌شود "gprof" ترتیبی پیشنهادی برای توابع برنامه را بر اساس داده‌های پروفایل چاپ کند. این گزینه ترتیبی را پیشنهاد می‌دهد که ممکن است رفتار صفحه‌بندی (paging)، tlb و حافظهٔ نهان (cache) را برای برنامه در سیستم‌هایی که از ترتیب دلخواه توابع در یک فایل اجرایی پشتیبانی می‌کنند، بهبود بخشد.

جزئیات دقیق نحوهٔ وادار کردن پیونددهنده به قرار دادن توابع در یک ترتیب خاص، وابسته به سیستم بوده و خارج از دامنهٔ این کتابچهٔ راهنما است.

"-R map_file"
"--file-ordering map_file"
گزینهٔ --file-ordering باعث می‌شود "gprof" ترتیبی پیشنهادی برای خط پیوند فایل‌های .o بر اساس داده‌های پروفایل چاپ کند. این گزینه ترتیبی را پیشنهاد می‌دهد که ممکن است رفتار صفحه‌بندی (paging)، tlb و حافظهٔ نهان (cache) را برای برنامه در سیستم‌هایی که از ترتیب دلخواه توابع در یک فایل اجرایی پشتیبانی نمی‌کنند، بهبود بخشد.

استفاده از آرگومان -a همراه با این گزینه بسیار توصیه می‌شود.

آرگومان map_file مسیر فایلی است که نگاشت نام تابع به فایل شیء را فراهم می‌سازد. قالب این فایل مشابه خروجی برنامهٔ "nm" است.

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
...

برای ایجاد یک map_file با GNU "nm"، دستوری شبیه به این را اجرا کنید: "nm --extern-only --defined-only -v --print-file-name program-name".

"-T"
"--traditional"
گزینهٔ -T باعث می‌شود "gprof" خروجی خود را به سبک «سنتی» BSD چاپ کند.
"-w width"
"--width=width"
عرض خطوط خروجی را به width تنظیم می‌کند. در حال حاضر فقط هنگام چاپ نمایهٔ توابع در پایین نمودار فراخوانی استفاده می‌شود.
"-x"
"--all-lines"
این گزینه فقط بر خروجی منبع حاشیه‌نویسی‌شده تأثیر می‌گذارد. به‌طور پیش‌فرض، فقط خطوط ابتدای یک بلوک پایه حاشیه‌نویسی می‌شوند. اگر این گزینه مشخص شود، هر خط در یک بلوک پایه با تکرار حاشیه‌نویسی خط اول، حاشیه‌نویسی خواهد شد. این رفتار مشابه -a در "tcov" است.
"--demangle[=style]"
"--no-demangle"
این گزینه‌ها کنترل می‌کنند که آیا نام نمادهای ++C هنگام چاپ خروجی باید به حالت اولیه بازگردانده (demangle) شوند یا خیر. حالت پیش‌فرض، بازگردانی نمادها (demangle) است. گزینهٔ "--no-demangle" می‌تواند برای غیرفعال کردن بازگردانی نام‌ها به کار رود. کامپایلرهای مختلف شیوه‌های درهم‌ریزی (mangling) متفاوتی دارند. از آرگومان اختیاری شیوهٔ بازگردانی (demangling style) می‌توان برای انتخاب شیوهٔ مناسب کامپایلر خود استفاده کرد..SS "گزینه‌های تحلیل (Analysis Options)"
"-a"
"--no-static"
گزینهٔ -a باعث می‌شود "gprof" از چاپ توابعی که به‌صورت ایستا (خصوصی یا static) تعریف شده‌اند خودداری کند. (این‌ها توابعی هستند که نامشان به‌صورت سراسری فهرست نشده و خارج از فایل/تابع/بلوکی که در آن تعریف شده‌اند، قابل مشاهده نیستند.) زمان صرف‌شده در این توابع، فراخوانی‌ها به/از آن‌ها و غیره، همگی به تابعی نسبت داده می‌شوند که در فایل اجرایی مستقیماً پیش از آن بارگذاری شده است. این گزینه هم بر پروفایل تخت (flat profile) و هم بر گراف فراخوانی (call graph) اثر می‌گذارد.
"-c"
"--static-call-graph"
گزینهٔ -c باعث می‌شود گراف فراخوانی برنامه با یک روش ابتکاری (heuristic) تکمیل شود که فضای کد (text space) فایل شیء را بررسی کرده و فراخوانی‌های تابع را در کد ماشین دودویی شناسایی می‌کند. از آنجا که رکوردهای عادی گراف فراخوانی تنها هنگام ورود به توابع تولید می‌شوند، این گزینه فرزندانی را شناسایی می‌کند که ممکن بود فراخوانی شوند، اما هرگز فراخوانی نشدند. فراخوانی‌های توابعی که با فعال بودن پروفایل‌سازی کامپایل نشده‌اند نیز شناسایی می‌شوند، اما تنها در صورتی که مدخل‌های جدول نماد برای آن‌ها موجود باشد. فراخوانی‌های روتین‌های کتابخانهٔ پویا معمولاً توسط این گزینه پیدا نمی‌شوند. والدین یا فرزندانی که با این روش شناسایی می‌شوند، در گراف فراخوانی با تعداد فراخوانی 0 نشان داده می‌شوند.
"-D"
"--ignore-non-functions"
گزینهٔ -D باعث می‌شود "gprof" نمادهایی را که به عنوان تابع شناخته نمی‌شوند نادیده بگیرد. این گزینه در سیستم‌هایی که از آن پشتیبانی می‌کنند (برای مثال Solaris و HPUX)، داده‌های پروفایل دقیق‌تری ارائه می‌دهد.
"-k from/to"
گزینهٔ -k به شما امکان می‌دهد هر کمانی از نمادهای منطبق با symspec from به نمادهای منطبق با symspec to را از گراف فراخوانی حذف کنید.
"-l"
"--line"
گزینهٔ -l پروفایل‌سازی خط‌به‌خط را فعال می‌کند که باعث می‌شود برخوردهای هیستوگرام به جای توابع، به تک‌تک خطوط کد منبع اختصاص یابند. این قابلیت تنها با برنامه‌هایی کار می‌کند که توسط نسخه‌های قدیمی‌تر کامپایلر "gcc" کامپایل شده باشند. نسخه‌های جدیدتر "gcc" طوری طراحی شده‌اند که به جای آن با ابزار "gcov" کار کنند.

اگر برنامه با فعال بودن شمارش بلوک‌های پایه (basic-block counting) کامپایل شده باشد، این گزینه همچنین تعداد دفعاتی را که هر خط از کد اجرا شده است مشخص می‌کند. اگرچه پروفایل‌سازی خط‌به‌خط می‌تواند به جداسازی بخشی از یک تابع بزرگ که برنامه زمان خود را در آن صرف می‌کند کمک کند، اما زمان اجرای "gprof" را نیز به‌طور چشمگیری افزایش داده و نادقیقی‌های آماری را بزرگنمایی می‌کند.

"--inline-file-names"
این گزینه باعث می‌شود "gprof" نام فایل منبع را پس از هر نماد، هم در پروفایل تخت و هم در گراف فراخوانی چاپ کند. در صورت استفاده به همراه گزینهٔ -L، مسیر کامل فایل چاپ می‌شود.
"-m num"
"--min-count=num"
این گزینه تنها بر خروجی تعداد دفعات اجرا اثر می‌گذارد. نمادهایی که کمتر از num بار اجرا شده باشند نادیده گرفته می‌شوند.
"-nsymspec"
"--time=symspec"
گزینهٔ -n باعث می‌شود "gprof" در تحلیل گراف فراخوانی خود، زمان‌ها را تنها برای نمادهای منطبق با symspec انتشار دهد.
"-Nsymspec"
"--no-time=symspec"
گزینهٔ -N باعث می‌شود "gprof" در تحلیل گراف فراخوانی خود، زمان‌ها را برای نمادهای منطبق با symspec انتشار ندهد.
"-Sfilename"
"--external-symbol-table=filename"
گزینهٔ -S باعث می‌شود "gprof" به جای خواندن جدول نمادها از فایل شیء داده‌شده (پیش‌فرض "a.out" است)، یک فایل جدول نمادهای خارجی مانند /proc/kallsyms را بخواند. این ویژگی برای پروفایل‌سازی ماژول‌های هسته کاربرد دارد.
"-z"
"--display-unused-functions"
اگر گزینهٔ -z را مشخص کنید، "gprof" تمام توابع را در پروفایل تخت ذکر خواهد کرد، حتی توابعی که هرگز فراخوانی نشده‌اند و هیچ زمانی در آن‌ها صرف نشده است. این ویژگی در ترکیب با گزینهٔ -c برای کشف روتین‌هایی که هرگز فراخوانی نشده‌اند کاربرد دارد..SS "گزینه‌های متفرقه (Miscellaneous Options)"
"-d[num]"
"--debug[=num]"
گزینهٔ -d num گزینه‌های اشکال‌زدایی را مشخص می‌کند. اگر num مشخص نشده باشد، تمام اشکال‌زدایی‌ها فعال می‌شوند.
"-h"
"--help"
گزینهٔ -h نحوهٔ استفاده از خط فرمان را چاپ می‌کند.
"-Oname"
"--file-format=name"
قالب فایل‌های داده‌های پروفایل را تعیین می‌کند. قالب‌های شناخته‌شده عبارتند از auto (پیش‌فرض)، bsd، 4.4bsd، magic و prof (هنوز پشتیبانی نمی‌شود).
"-s"
"--sum"
گزینهٔ -s باعث می‌شود "gprof" اطلاعات موجود در فایل‌های داده‌های پروفایل خوانده‌شده را خلاصه‌سازی کرده و یک فایل داده‌های پروفایل به نام gmon.sum بنویسد که دربردارندهٔ تمام اطلاعات حاصل از فایل‌های داده‌های پروفایل خوانده‌شده توسط "gprof" است. فایل gmon.sum می‌تواند یکی از فایل‌های ورودی مشخص‌شده باشد؛ اثر این کار ادغام داده‌های سایر فایل‌های ورودی در gmon.sum است.

در نهایت می‌توانید "gprof" را دوباره بدون -s اجرا کنید تا داده‌های تجمیعی در فایل gmon.sum را تحلیل نمایید.

"-v"
"--version"
پرچم -v باعث می‌شود "gprof" شمارهٔ نسخهٔ فعلی را چاپ کرده و سپس خارج شود.

این گزینه‌ها با نسخه‌های جدیدتری که از symspecs استفاده می‌کنند جایگزین شده‌اند.

"-e function_name"
گزینهٔ -e function به "gprof" اعلام می‌کند که اطلاعات مربوط به تابع function_name (و فرزندان آن...) را در گراف فراخوانی چاپ نکند. این تابع همچنان به عنوان فرزند هر تابعی که آن را فراخوانی کرده باشد فهرست می‌شود، اما شماره نمایهٔ آن به صورت [not printed] نمایش داده خواهد شد. می‌توان بیش از یک گزینهٔ -e را مشخص کرد؛ با هر گزینهٔ -e تنها یک function_name قابل تعیین است.
"-E function_name"
گزینهٔ "-E function" مانند گزینهٔ "-e" عمل می‌کند، اما زمان صرف‌شده در تابع (و فرزندانی که از هیچ جای دیگر فراخوانی نشده‌اند) برای محاسبهٔ درصدهای زمانی در گراف فراخوانی استفاده نخواهد شد. می‌توان بیش از یک گزینهٔ -E را مشخص کرد؛ با هر گزینهٔ -E تنها یک function_name قابل تعیین است.
"-f function_name"
گزینهٔ -f function باعث می‌شود "gprof" گراف فراخوانی را به تابع function_name و فرزندان آن (و فرزندان آن‌ها...) محدود کند. می‌توان بیش از یک گزینهٔ -f را مشخص کرد؛ با هر گزینهٔ -f تنها یک function_name قابل تعیین است.
"-F function_name"
گزینهٔ -F function مانند گزینهٔ "-f" عمل می‌کند، اما تنها زمان صرف‌شده در تابع و فرزندان آن (و فرزندان آن‌ها...) برای تعیین زمان کل و درصدهای زمانی در گراف فراخوانی به کار خواهد رفت. می‌توان بیش از یک گزینهٔ -F را مشخص کرد؛ با هر گزینهٔ -F تنها یک function_name قابل تعیین است. گزینهٔ -F بر گزینهٔ -E اولویت دارد.

"a.out"
فهرست نام‌ها (namelist) و فضای متن.
"gmon.out"
گراف فراخوانی و پروفایل پویا.
"gmon.sum"
گراف فراخوانی و پروفایل پویای خلاصه‌شده.

میزان ریزدانگی (granularity) نمونه‌برداری نمایش داده می‌شود، اما در بهترین حالت ماهیتی آماری دارد. فرض بر این است که زمان هر بار اجرای یک تابع می‌تواند از تقسیم زمان کل تابع بر تعداد دفعات فراخوانی آن بیان شود. بنابراین، زمانی که در امتداد کمان‌های گراف فراخوانی به سمت والدین تابع منتقل می‌شود، با تعداد دفعات پیمایش آن کمان نسبت مستقیم دارد.

والدینی که خودشان پروفایل‌بندی نشده‌اند، زمان فرزندان پروفایل‌شده‌شان به آن‌ها منتقل می‌شود، اما در فهرست گراف فراخوانی چنین به نظر می‌رسد که به طور خودبه‌خودی فراخوانی شده‌اند و زمان آن‌ها به سطوح بالاتر منتقل نخواهد شد. به همین ترتیب، گیرنده‌های سیگنال (signal catchers)، حتی در صورت پروفایل‌بندی، خودبه‌خودی به نظر خواهند رسید (اگرچه به دلایلی پیچیده‌تر). زمان هر فرزند پروفایل‌شدهٔ گیرنده‌های سیگنال باید به درستی منتقل شود، مگر آنکه گیرندهٔ سیگنال در طول اجرای روال پروفایل‌بندی فراخوانی شده باشد که در این صورت تمام داده‌ها از دست می‌رود.

برنامهٔ پروفایل‌شده باید "exit"(2) را فراخوانی کند یا به طور عادی بازگردد تا اطلاعات پروفایل‌بندی در فایل gmon.out ذخیره شود..SH "همچنین ببینید (SEE ALSO)" monitor(3)، profil(2)، cc(1)، prof(1) و مدخل Info برای gprof.

"An Execution Profiler for Modular Programs", اثر S. Graham، P. Kessler، M. McKusick؛ Software - Practice and Experience, Vol. 13, pp. 671-685, 1983.

"gprof: A Call Graph Execution Profiler", اثر S. Graham، P. Kessler، M. McKusick؛ Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982.

Copyright (c) 1988-2026 Free Software Foundation, Inc.

اجازهٔ نسخه‌برداری، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ جدیدتر منتشرشده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متن‌های روی جلد و بدون متن‌های پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.

2026-07-26 binutils-2.47