.\" -*- 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-08-31 binutils-2.47 "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 آدرس‌ها یا نماد+آفست را به نام فایل‌ها و شماره خطوط ترجمه می‌کند. با دریافت یک آدرس یا نماد+آفست در یک فایل اجرایی یا یک آفست در بخشی از یک شیء بازآرایی‌پذیر (relocatable object)، این ابزار با استفاده از اطلاعات اشکال‌زدایی تشخیص می‌دهد که کدام نام فایل و شماره خط با آن مرتبط هستند. .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 هنگامی که از نماد+آفست استفاده می‌شود، بخش +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 مشخص می‌کند که قالب کد شیء برای فایل‌های شیء، \&\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 تنها بخش پایه‌ای هر نام فایل را نمایش می‌دهد. .IP \fB\-i\fR 4 .IX Item "-i" .PD 0 .IP \fB\-\-inlines\fR 4 .IX Item "--inlines" .PD اگر آدرس متعلق به تابعی باشد که درون‌ریزی شده است، اطلاعات مبدأ برای تمام حوزه‌های دربرگیرنده تا نخستین تابع غیر درون‌ریزی‌شده نیز چاپ خواهد شد. برای نمونه، اگر \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 آفست‌ها را نسبت به بخش مشخص‌شده می‌خواند، نه به‌صورت آدرس‌های مطلق. .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) انجام‌شده هنگام demangle کردن رشته‌ها را فعال یا غیرفعال می‌کند. از آنجا که قالب‌های mangling نام اجازهٔ سطوح نامحدودی از بازگشت را می‌دهند، این امکان وجود دارد که رشته‌هایی ایجاد شوند که رمزگشایی آن‌ها تمام فضای پشتهٔ (stack) موجود در دستگاه میزبان را مصرف کند و منجر به خطای حافظه گردد. این محدودیت با محدود کردن بازگشت به ۲۰۴۸ سطح تودرتو سعی می‌کند از این رخداد جلوگیری کند. .Sp پیش‌فرض این است که این محدودیت فعال باشد، اما غیرفعال کردن آن ممکن است برای demangle کردن نام‌های واقعاً پیچیده ضروری باشد. با این حال توجه داشته باشید که اگر محدودیت بازگشت غیرفعال شود، امکان اتمام پشته وجود دارد و هرگونه گزارش باگ دربارهٔ چنین رویدادی رد خواهد شد. .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 با نویسه‌های فاصله از یکدیگر جدا می‌شوند. یک نویسهٔ فاصله می‌تواند با احاطه کردن کل گزینه در علامت‌های نقل‌قول تکی یا جفتی در یک گزینه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با اضافه کردن پیشوند بک‌اسلش به نویسه در گزینه قرار گیرد. خود \fIfile\fR نیز ممکن است شامل گزینه‌های @\fIfile\fR دیگری باشد؛ چنین گزینه‌هایی به‌صورت بازگشتی پردازش خواهند شد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" مدخل‌های Info برای \fIbinutils\fR. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" Copyright (c) 1991\-2026 Free Software Foundation, Inc. .PP اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ بعدی منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متن‌های روی جلد و بدون متن‌های پشت جلد. یک نسخه از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.