ADDR2LINE(1) GNU Development Tools ADDR2LINE(1)

addr2line - تبدیل آدرس‌ها یا نماد+آفست به نام فایل‌ها و شماره خط‌ها

addr2line [-a|--addresses]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style]]
[-r|--no-recurse-limit]
[-R|--recurse-limit]
[-e filename|--exe=filename]
[-f|--functions] [-s|--basename]
[-i|--inlines]
[-p|--pretty-print]
[-j|--section=name]
[-H|--help] [-V|--version]
[addr addr ...]

دستور addr2line آدرس‌ها یا نماد+آفست (symbol+offset) را به نام فایل‌ها و شماره خطوط تبدیل می‌کند. با داشتن یک آدرس یا نماد+آفست در یک فایل اجرایی یا یک آفست در بخشی از یک شیء بازآرایی‌پذیر (relocatable object)، این ابزار از اطلاعات اشکال‌زدایی برای پیدا کردن نام فایل و شماره خط متناظر با آن استفاده می‌کند.

فایل اجرایی یا شیء بازآرایی‌پذیر مورد استفاده با گزینهٔ -e مشخص می‌شود. پیش‌فرض، فایل a.out است. بخش موجود در شیء بازآرایی‌پذیر با گزینهٔ -j تعیین می‌گردد.

ابزار addr2line دو حالت کاری دارد.

در حالت نخست، آدرس‌های مبنای شانزده (hexadecimal) یا نماد+آفست در خط فرمان مشخص می‌شوند و addr2line نام فایل و شماره خط را برای هر آدرس نمایش می‌دهد.

در حالت دوم، addr2line آدرس‌های مبنای شانزده یا نماد+آفست را از ورودی استاندارد خوانده و نام فایل و شماره خط مربوط به هر آدرس را در خروجی استاندارد چاپ می‌کند. در این حالت، می‌توان از addr2line در یک لوله (pipe) برای تبدیل آدرس‌های انتخاب‌شده به‌صورت پویا استفاده کرد.

قالب خروجی به‌صورت FILENAME:LINENO است. به‌طور پیش‌فرض، هر آدرس ورودی یک خط خروجی تولید می‌کند.

دو گزینه می‌توانند خطوط اضافی را پیش از هر خط FILENAME:LINENO (به همان ترتیب) تولید کنند.

اگر از گزینهٔ -a استفاده شود، خطی حاوی آدرس ورودی نمایش داده می‌شود.

اگر از گزینهٔ -f استفاده شود، خطی شامل FUNCTIONNAME نمایش داده می‌شود. این مقدار، نام تابعی است که آدرس را در بر دارد.

یک گزینه می‌تواند خطوط بیشتری را پس از خط FILENAME:LINENO تولید کند.

اگر از گزینهٔ -i استفاده شود و کد موجود در آدرس مشخص‌شده به دلیل درون‌خطی‌سازی (inlining) توسط کامپایلر در آنجا قرار گرفته باشد، خطوط اضافی در ادامه نمایش داده می‌شوند. به ازای هر تابع درون‌خطی‌شده، یک یا دو خط اضافی (در صورت استفاده از گزینهٔ -f) نمایش داده می‌شود.

در روش دیگر، اگر از گزینهٔ -p استفاده شود، هر آدرس ورودی یک خط خروجی یکتا و طولانی شامل آدرس، نام تابع، نام فایل و شماره خط تولید می‌کند. اگر گزینهٔ -i نیز استفاده شده باشد، هرگونه تابع درون‌خطی‌شده نیز به همان شکل، اما در خطوطی مجزا و با پیشوند متن (inlined by) نمایش داده خواهد شد.

اگر نام فایل یا نام تابع قابل تشخیص نباشد، addr2line به‌جای آن‌ها دو علامت سؤال چاپ می‌کند. اگر شماره خط قابل تشخیص نباشد، addr2line عدد 0 را چاپ می‌کند.

هنگام استفاده از symbol+offset، بخش +offset اختیاری است؛ مگر زمانی که نماد با یک عدد مبنای شانزده دچار ابهام باشد. نمادهای شناسایی‌شده می‌توانند به‌صورت mangled یا unmangled باشند، با این استثنا که نمادهای unmangled دارای + مجاز نیستند.

فرم‌های کوتاه و بلند گزینه‌ها که در اینجا به‌عنوان جایگزین نمایش داده شده‌اند، معادل یکدیگر هستند.

نمایش آدرس پیش از نام تابع و اطلاعات فایل و شماره خط. آدرس همراه با پیشوند 0x چاپ می‌شود تا به آسانی قابل تشخیص باشد.
قالب کد شیء (object-code) برای فایل‌های شیء را برابر با bfdname تعیین می‌کند.
رمزگشایی (demangle) نام نمادهای سطح پایین به نام‌های سطح کاربر. این قابلیت علاوه بر حذف هرگونه زیرخط ابتدایی اضافه‌شده توسط سیستم، نام توابع ++C را خوانا می‌کند. کامپایلرهای مختلف شیوه‌های متفاوتی برای mangling دارند. آرگومان اختیاری سبکِ بازگردانی (demangling style) می‌تواند برای انتخاب روش مناسب با کامپایلر شما به کار رود.
نام فایل اجرایی را که آدرس‌های آن باید ترجمه شوند مشخص می‌کند. فایل پیش‌فرض a.out است.
نمایش نام توابع در کنار اطلاعات فایل و شماره خط.
تنها بخش اصلی نام هر فایل (بدون مسیر دایرکتوری) را نمایش می‌دهد.
اگر آدرس متعلق به تابعی باشد که درون‌خطی (inlined) شده است، اطلاعات مبدأ برای تمام دامنه‌های دربرگیرنده تا نخستین تابع غیر درون‌خطی‌شده نیز چاپ می‌شود. برای نمونه، اگر "main" تابع "callee1" را درون‌خطی کرده باشد و آن هم "callee2" را درون‌خطی کند، و آدرس متعلق به "callee2" باشد، اطلاعات مبدأ برای "callee1" و "main" نیز چاپ خواهد شد.
خواندن آفست‌ها به صورت نسبی با بخش (section) مشخص‌شده به جای آدرس‌های مطلق.
خروجی را خواناتر می‌کند: هر موقعیت در یک خط چاپ می‌شود. اگر گزینهٔ -i مشخص شده باشد، خطوط مربوط به تمام دامنه‌های دربرگیرنده دارای پیشوند (inlined by) خواهند بود.
فعال یا غیرفعال کردن محدودیت بر میزان بازگشت (recursion) انجام‌شده هنگام demangle کردن رشته‌ها. از آنجا که قالب‌های mangling نام اجازهٔ سطوح نامحدود بازگشت را می‌دهند، ممکن است رشته‌هایی تولید شوند که رمزگشایی آن‌ها تمام فضای پشتهٔ (stack) موجود در ماشین میزبان را مصرف کند و منجر به خطای حافظه شود. این محدودیت تلاش می‌کند با محدود کردن بازگشت به ۲۰۴۸ سطح تو در تو، از بروز چنین مشکلی جلوگیری کند.

حالت پیش‌فرض بر فعال بودن این محدودیت است، اما ممکن است غیرفعال کردن آن برای demangle کردن نام‌های واقعاً پیچیده ضروری باشد. با این حال توجه داشته باشید که در صورت غیرفعال بودن این محدودیت، احتمال سرریز و اتمام پشته وجود دارد و هرگونه گزارش باگ مربوط به چنین رخدادی رد خواهد شد.

گزینهٔ -r مترادفی برای گزینهٔ --no-recurse-limit است. گزینهٔ -R مترادفی برای گزینهٔ --recurse-limit است.

توجه داشته باشید که این گزینه تنها در صورتی اثرگذار است که گزینهٔ -C یا --demangle فعال باشد.

@file
خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به‌جای گزینهٔ اولیهٔ @file درج می‌شوند. اگر file وجود نداشته باشد یا خوانده نشود، گزینه به‌صورت لفظی در نظر گرفته شده و حذف نخواهد شد.

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

مدخل‌های Info برای binutils.

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

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

2026-08-03 binutils-2.47