.\" -*- 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 "ADDR2LINE 1" .TH ADDR2LINE 1 2026-01-23 binutils-2.45.1 "GNU Development Tools" .\" 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)" addr2line \- تبدیل نشانی‌ها یا نماد+آفست به نام فایل و شماره خط .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" addr2line [\fB\-a\fR|\fB\-\-addresses\fR] [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]] [\fB\-r\fR|\fB\-\-no\-recurse\-limit\fR] [\fB\-R\fR|\fB\-\-recurse\-limit\fR] [\fB\-e\fR \fIfilename\fR|\fB\-\-exe=\fR\fIfilename\fR] [\fB\-f\fR|\fB\-\-functions\fR] [\fB\-s\fR|\fB\-\-basename\fR] [\fB\-i\fR|\fB\-\-inlines\fR] [\fB\-p\fR|\fB\-\-pretty\-print\fR] [\fB\-j\fR|\fB\-\-section=\fR\fIname\fR] [\fB\-H\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [addr addr ...] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBaddr2line\fR نشانی‌ها یا نماد+آفست (symbol+offset) را به نام فایل و شماره خط تبدیل می‌کند. این ابزار با دریافت یک نشانی یا نماد+آفست در یک فایل اجرایی یا یک آفست در بخشی از یک شیء بازآرایی‌پذیر (relocatable object)، با استفاده از اطلاعات اشکال‌زدایی (debugging information) مشخص می‌کند که کدام نام فایل و شماره خط با آن مرتبط هستند. .PP فایل اجرایی یا شیء بازآرایی‌پذیر مورد استفاده با گزینهٔ \fB\-e\fR مشخص می‌شود. پیش‌فرض فایل \fIa.out\fR است. بخشی در شیء بازآرایی‌پذیر که باید استفاده شود با گزینهٔ \fB\-j\fR تعیین می‌شود. .PP دستور \&\fBaddr2line\fR دارای دو حالت کاری است. .PP در حالت اول، نشانی‌های هگزادسیمال یا نماد+آفست در خط فرمان مشخص می‌شوند و \fBaddr2line\fR نام فایل و شماره خط را برای هر نشانی نمایش می‌دهد. .PP در حالت دوم، \fBaddr2line\fR نشانی‌های هگزادسیمال یا نماد+آفست را از ورودی استاندارد می‌خواند و نام فایل و شماره خط را برای هر نشانی در خروجی استاندارد چاپ می‌کند. در این حالت، می‌توان از \fBaddr2line\fR در یک لوله (pipe) برای تبدیل نشانی‌های پویا استفاده کرد. .PP قالب خروجی به‌صورت \fBFILENAME:LINENO\fR است. به‌طور پیش‌فرض هر نشانی ورودی یک خط خروجی تولید می‌کند. .PP دو گزینه می‌توانند خطوط اضافی قبل از هر خط \&\fBFILENAME:LINENO\fR (به همان ترتیب) تولید کنند. .PP اگر از گزینهٔ \fB\-a\fR استفاده شود، خطی شامل نشانی ورودی نمایش داده می‌شود. .PP اگر از گزینهٔ \fB\-f\fR استفاده شود، خطی با \&\fBFUNCTIONNAME\fR نمایش داده می‌شود. این مقدار، نام تابعی است که نشانی را در بر دارد. .PP یک گزینه می‌تواند خطوط اضافی پس از خط \&\fBFILENAME:LINENO\fR تولید کند. .PP اگر از گزینهٔ \fB\-i\fR استفاده شود و کد موجود در نشانی داده‌شده به‌دلیل درون‌خطی‌سازی (inlining) توسط کامپایلر در آنجا قرار گرفته باشد، خطوط اضافی پس از آن نمایش داده می‌شوند. برای هر تابع درون‌خطی‌شده، یک یا دو خط اضافی (در صورت استفاده از گزینهٔ \fB\-f\fR) نمایش می‌یابد. .PP به‌عنوان جایگزین، اگر از گزینهٔ \fB\-p\fR استفاده شود، هر نشانی ورودی یک خط خروجیِ تکی و بلند شامل نشانی، نام تابع، نام فایل و شماره خط تولید می‌کند. اگر گزینهٔ \&\fB\-i\fR نیز استفاده شده باشد، تمام توابع درون‌خطی‌شده به همین شیوه اما در خطوط جداگانه و با پیشوند \fB(inlined by)\fR نمایش داده می‌شوند. .PP اگر نام فایل یا نام تابع قابل تشخیص نباشد، \&\fBaddr2line\fR دو علامت سؤال به‌جای آن‌ها چاپ می‌کند. اگر شماره خط قابل تشخیص نباشد، \fBaddr2line\fR مقدار 0 را چاپ می‌کند. .PP هنگام استفاده از symbol+offset، بخش +offset اختیاری است، مگر در حالتی که نماد با یک عدد هگزادسیمال مبهم باشد و اشتباه گرفته شود. نمادهای پردازش‌شده می‌توانند به‌صورت mangled یا unmangled باشند، به استثنای نمادهای unmangled دارای + که مجاز نیستند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" فرم‌های کوتاه و بلند گزینه‌ها که در اینجا به‌صورت گزینه‌های جایگزین نشان داده شده‌اند، معادل یکدیگرند. .IP \fB\-a\fR 4 .IX Item "-a" .PD 0 .IP \fB\-\-addresses\fR 4 .IX Item "--addresses" .PD نمایش نشانی پیش از نام تابع، نام فایل و اطلاعات شماره خط. نشانی با پیشوند \fB0x\fR چاپ می‌شود تا به‌راحتی قابل تشخیص باشد. .IP "\fB\-b\fR \fIbfdname\fR" 4 .IX Item "-b bfdname" .PD 0 .IP \fB\-\-target=\fR\fIbfdname\fR 4 .IX Item "--target=bfdname" .PD قالب کد شیء (object-code format) برای فایل‌های شیء را \&\fIbfdname\fR تعیین می‌کند. .IP \fB\-C\fR 4 .IX Item "-C" .PD 0 .IP \fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR 4 .IX Item "--demangle[=style]" .PD رمزگشایی (\fIdemangle\fR) نام‌های نماد سطح‌پایین به نام‌های سطح کاربر. این گزینه علاوه بر حذف هرگونه زیرخط (underscore) ابتدایی که توسط سیستم اضافه شده، نام توابع ++C را خوانا می‌کند. کامپایلرهای مختلف روش‌های متفاوتی برای mangling دارند. آرگومان اختیاری سبک demangling می‌تواند برای انتخاب شیوهٔ مناسب برای کامپایلر شما استفاده شود. .IP "\fB\-e\fR \fIfilename\fR" 4 .IX Item "-e filename" .PD 0 .IP \fB\-\-exe=\fR\fIfilename\fR 4 .IX Item "--exe=filename" .PD نام فایل اجرایی که نشانی‌های آن باید ترجمه شوند را مشخص می‌کند. فایل پیش‌فرض \fIa.out\fR است. .IP \fB\-f\fR 4 .IX Item "-f" .PD 0 .IP \fB\-\-functions\fR 4 .IX Item "--functions" .PD نمایش نام توابع در کنار نام فایل و اطلاعات شماره خط. .IP \fB\-s\fR 4 .IX Item "-s" .PD 0 .IP \fB\-\-basenames\fR 4 .IX Item "--basenames" .PD تنها بخش پایهٔ نام هر فایل (basename) را نمایش می‌دهد. .IP \fB\-i\fR 4 .IX Item "-i" .PD 0 .IP \fB\-\-inlines\fR 4 .IX Item "--inlines" .PD اگر نشانی متعلق به تابعی باشد که درون‌خطی (inlined) شده است، اطلاعات کد منبع برای تمام دامنه‌های دربرگیرنده تا اولین تابع غیر درون‌خطی نیز چاپ خواهد شد. برای مثال، اگر \f(CW\*(C`main\*(C'\fR تابع \&\f(CW\*(C`callee1\*(C'\fR را درون‌خطی کند و آن هم \f(CW\*(C`callee2\*(C'\fR را درون‌خطی کرده باشد، و نشانی متعلق به \&\f(CW\*(C`callee2\*(C'\fR باشد، اطلاعات منبع برای \f(CW\*(C`callee1\*(C'\fR و \f(CW\*(C`main\*(C'\fR نیز چاپ خواهد شد. .IP \fB\-j\fR 4 .IX Item "-j" .PD 0 .IP \fB\-\-section\fR 4 .IX Item "--section" .PD آفست‌ها را به‌جای نشانی‌های مطلق، به‌صورت نسبی نسبت به بخش (section) مشخص‌شده می‌خواند. .IP \fB\-p\fR 4 .IX Item "-p" .PD 0 .IP \fB\-\-pretty\-print\fR 4 .IX Item "--pretty-print" .PD خروجی را خواناتر و تمیزتر می‌کند: هر موقعیت در یک خط جداگانه چاپ می‌شود. در صورت مشخص شدن گزینهٔ \fB\-i\fR، خطوط مربوط به تمام دامنه‌های دربرگیرنده دارای پیشوند \fB(inlined by)\fR خواهند بود. .IP \fB\-r\fR 4 .IX Item "-r" .PD 0 .IP \fB\-R\fR 4 .IX Item "-R" .IP \fB\-\-recurse\-limit\fR 4 .IX Item "--recurse-limit" .IP \fB\-\-no\-recurse\-limit\fR 4 .IX Item "--no-recurse-limit" .IP \fB\-\-recursion\-limit\fR 4 .IX Item "--recursion-limit" .IP \fB\-\-no\-recursion\-limit\fR 4 .IX Item "--no-recursion-limit" .PD محدودیت میزان بازگشت (recursion) انجام‌شده هنگام رمزگشایی (demangling) رشته‌ها را فعال یا غیرفعال می‌کند. از آنجا که ساختارهای name mangling امکان بازگشت نامحدود را دارند، ممکن است رشته‌هایی ساخته شوند که رمزگشایی آن‌ها تمام فضای پشته (stack) موجود در رایانهٔ میزبان را مصرف کرده و باعث خطای حافظه شود. این محدودیت تلاش می‌کند با محدود کردن بازگشت به ۲۰۴۸ سطح تو در تو، از بروز این مشکل جلوگیری کند. .Sp به‌طور پیش‌فرض این محدودیت فعال است، اما غیرفعال کردن آن ممکن است برای رمزگشایی نام‌های بسیار پیچیده ضروری باشد. با این حال توجه داشته باشید که با غیرفعال کردن محدودیت بازگشت، احتمال اتمام حافظه پشته وجود دارد و هرگونه گزارش باگ در این رابطه رد خواهد شد. .Sp گزینهٔ \fB\-r\fR مترادفی برای گزینهٔ \&\fB\-\-no\-recurse\-limit\fR است. گزینهٔ \fB\-R\fR مترادفی برای گزینهٔ \fB\-\-recurse\-limit\fR است. .Sp توجه داشته باشید که این گزینه تنها در صورتی اثرگذار است که گزینهٔ \fB\-C\fR یا \&\fB\-\-demangle\fR فعال شده باشد. .IP \fB@\fR\fIfile\fR 4 .IX Item "@file" گزینه‌های خط فرمان را از \fIfile\fR می‌خواند. گزینه‌های خوانده‌شده به‌جای گزینهٔ اصلی @\fIfile\fR جایگزین می‌شوند. اگر \fIfile\fR وجود نداشته باشد یا قابل خواندن نباشد، با گزینه به‌صورت لغوی رفتار شده و حذف نخواهد شد. .Sp گزینه‌ها در \fIfile\fR با نویسه‌های فاصله خالی (whitespace) از یکدیگر جدا می‌شوند. یک نویسهٔ فاصله می‌تواند با قرار گرفتن کل گزینه درون گیومهٔ تکی یا دوگانه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با درج یک پیشوند بک‌اسلش قبل از آن، گنجانده شود. خود \fIfile\fR می‌تواند شامل گزینه‌های اضافی @\fIfile\fR باشد؛ هرگونه گزینهٔ این‌چنینی به‌صورت بازگشتی پردازش خواهد شد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" مدخل‌های Info برای \fIbinutils\fR. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) ۱۹۹۱\-۲۰۲۵ بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ بالاتر منتشرشده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.