.\" -*- 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-03 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)، این ابزار از اطلاعات اشکال‌زدایی (debugging) استفاده می‌کند تا مشخص کند کدام نام فایل و شماره خط به آن مرتبط هستند. .PP فایل اجرایی یا شیء بازآرایی‌پذیر مورد استفاده با گزینه \fB\-e\fR مشخص می‌شود. مقدار پیش‌فرض، فایل \fIa.out\fR است. بخشی از شیء بازآرایی‌پذیر که باید استفاده شود با گزینه \fB\-j\fR تعیین می‌گردد. .PP دستور \&\fBaddr2line\fR دو حالت عملیاتی دارد. .PP در حالت اول، آدرس‌های هگزادسیمال یا نماد+آفست در خط فرمان مشخص می‌شوند و \fBaddr2line\fR نام فایل و شماره خط مربوط به هر آدرس را نمایش می‌دهد. .PP در حالت دوم، \fBaddr2line\fR آدرس‌های هگزادسیمال یا نماد+آفست را از ورودی استاندارد می‌خواند و نام فایل و شماره خط هر آدرس را در خروجی استاندارد چاپ می‌کند. در این حالت، می‌توان از \fBaddr2line\fR در یک پایپ برای تبدیل آدرس‌های انتخاب‌شده به‌صورت پویا استفاده کرد. .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) نام‌های نمادهای سطح‌پایین به نام‌های سطح کاربر. این کار علاوه بر حذف هرگونه زیرخط اولیه که توسط سیستم اضافه می‌شود، نام توابع C++ را خوانا می‌کند. کامپایلرهای مختلف شیوه‌های متفاوتی برای mangling دارند. با استفاده از آرگومان اختیاری demangling style می‌توانید شیوه مناسب را برای کامپایلر خود انتخاب کنید. .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 اگر آدرس متعلق به تابعی باشد که درون‌نشانی (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 خواندن آفست‌ها نسبت به بخش مشخص‌شده به جای آدرس‌های مطلق. .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) موجود در دستگاه میزبان را مصرف کرده و موجب خطای حافظه (memory fault) شود. این محدودیت تلاش می‌کند با محدود کردن بازگشت به ۲۰۴۸ سطح تو در تو، از بروز چنین رخدادی جلوگیری کند. .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) 1991\-2026 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از این مجوز در بخش با عنوان "GNU Free Documentation License" گنجانده شده است.