| OBJDUMP(1) | GNU Development Tools | OBJDUMP(1) |
نام (NAME)
objdump - نمایش اطلاعات از فایلهای شیء
خلاصه دستور (SYNOPSIS)
objdump [-a|--archive-headers]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style] ]
[-d|--disassemble[=symbol]]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[-F|--file-offsets]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j section|--section=section]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=text]]
[-m machine|--architecture=machine]
[-M options|--disassembler-options=options]
[-p|--private-headers]
[-P options|--private=options]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-Z|--decompress]
[-W[lLiaprmfFsoORtUuTgAck]|
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
[-WK|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-wD|--dwarf=use-debuginfod]
[-wE|--dwarf=do-not-use-debuginfod]
[-L|--process-links]
[--ctf=section]
[--sframe=section]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=address]
[--stop-address=address]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=offset]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=section]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=prefix]
[--prefix-strip=level]
[--insn-width=width]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U method] [--unicode=method]
[-V|--version]
[-H|--help]
objfile....SH
"توضیحات
(DESCRIPTION)" دستور objdump
اطلاعات
مربوط به یک
یا چند فایل
شیء (object file) را
نمایش
میدهد.
گزینهها
مشخص
میکنند چه
اطلاعات
خاصی نمایش
داده شود.
این
اطلاعات
بیشتر برای
برنامهنویسانی
مفید است که
روی
ابزارهای
کامپایل
کار
میکنند،
بر خلاف
برنامهنویسانی
که صرفاً
میخواهند
برنامهشان
کامپایل
شده و اجرا
شود.
objfile... فایلهای شیء هستند که باید بررسی شوند. هنگامی که آرشیوها را مشخص میکنید، objdump اطلاعات مربوط به هر یک از فایلهای شیء عضو را نمایش میدهد.
گزینهها (OPTIONS)
فرمهای کوتاه و بلند گزینهها که در اینجا به عنوان حالتهای جایگزین نشان داده شدهاند، معادل یکدیگرند. حداقل یک گزینه از فهرست -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x باید مشخص شود.
- -a
- --archive-header
- اگر هر یک از فایلهای objfile آرشیو باشند، اطلاعات سرآیند آرشیو را (در قالبی مشابه ls -l) نمایش میدهد. علاوه بر اطلاعاتی که میتوانید با ar tv فهرست کنید، objdump -a قالب فایل شیء هر یک از اعضای آرشیو را نیز نشان میدهد.
- --adjust-vma=offset
- هنگام استخراج و نمایش اطلاعات، ابتدا مقدار offset را به آدرس تمام بخشها (sections) اضافه میکند. این ویژگی زمانی مفید است که آدرس بخشها با جدول نمادها (symbol table) مطابقت نداشته باشد؛ امری که ممکن است هنگام قرار دادن بخشها در آدرسهای خاص به هنگام استفاده از قالبی که نمیتواند آدرس بخشها را نشان دهد (مانند a.out) رخ دهد.
- -b bfdname
- --target=bfdname
- مشخص
میکند که
قالب کد شیء
برای
فایلهای
شیء، bfdname است.
این گزینه
ممکن است
ضروری
نباشد؛ objdump
میتواند
بسیاری از
قالبها را
به طور
خودکار
شناسایی
کند.
برای مثال،
objdump -b oasys -m vax -h fu.o
اطلاعات خلاصهای از سرآیندهای بخش (-h) مربوط به fu.o را نمایش میدهد که به صراحت (-m) به عنوان یک فایل شیء VAX در قالب تولید شده توسط کامپایلرهای Oasys مشخص شده است. میتوانید قالبهای موجود را با گزینه -i فهرست کنید.
- -C
- --demangle[=style]
- رمزگشایی (demangle) نامهای نمادهای سطح پایین به نامهای سطح کاربر. علاوه بر حذف هرگونه خط تیره زیرین (underscore) اولیه که توسط سیستم اضافه شده، این گزینه نام توابع ++C را خوانا میکند. کامپایلرهای مختلف سبکهای درهمسازی (mangling) متفاوتی دارند. از آرگومان اختیاری سبک بازگردانی میتوان برای انتخاب سبک بازگردانی مناسب کامپایلر خود استفاده کرد.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیت
عمق بازگشت
انجامشده
هنگام
بازگردانی
رشتهها (demangling)
را فعال یا
غیرفعال
میکند. از
آنجا که
قالبهای
درهمسازی
نامها
اجازه سطح
نامحدودی
از بازگشت
را
میدهند،
ممکن است
رشتههایی
ایجاد شوند
که
رمزگشایی
آنها تمام
فضای پشته (stack)
موجود در
ماشین
میزبان را
تمام کرده و
خطای حافظه
ایجاد کند.
این
محدودیت با
محدود کردن
بازگشت به
۲۰۴۸ سطح
تودرتو،
سعی میکند
از این
اتفاق
جلوگیری
کند.
به طور پیشفرض این محدودیت فعال است، اما غیرفعال کردن آن ممکن است برای بازگردانی نامهای واقعاً پیچیده لازم باشد. با این حال توجه داشته باشید که اگر محدودیت بازگشت غیرفعال شود، اتمام فضای پشته محتمل است و هرگونه گزارش باگ درباره چنین رخدادی رد خواهد شد.
- -g
- --debugging
- اطلاعات اشکالزدایی را نمایش میدهد. این گزینه سعی میکند اطلاعات قالب اشکالزدایی STABS ذخیرهشده در فایل را تجزیه کرده و آن را با استفاده از نگارشی شبیه زبان C چاپ کند. اگر هیچ اشکالزدایی STABS یافت نشد، این گزینه به گزینه -W برای چاپ هرگونه اطلاعات DWARF در فایل متوسل میشود.
- -e
- --debugging-tags
- مشابه -g، اما اطلاعات در قالبی سازگار با ابزار ctags تولید میشود.
- -d
- --disassemble
- --disassemble=symbol
- کدهای
یادآور
اسمبلی (assembler mnemonics)
را برای
دستورالعملهای
ماشین از
فایل ورودی
نمایش
میدهد. این
گزینه فقط
بخشهایی
را
دیساسمبل
میکند که
انتظار
میرود
شامل
دستورالعمل
باشند. اگر
آرگومان
اختیاری symbol
مشخص شود
(شاید چندین
بار)،
یادآورهای
اسمبلی را
از (تمام)
symbolها شروع
به نمایش
میکند. اگر
symbol نام یک
تابع باشد،
عمل
دیساسمبل
در انتهای
تابع متوقف
میشود، در
غیر این
صورت با
رسیدن به
نماد بعدی
متوقف
خواهد شد.
اگر هیچ
تطابقی
برای هیچ symbol
یافت نشود،
چیزی نمایش
داده
نخواهد شد.
توجه داشته باشید اگر گزینه --dwarf=follow-links فعال باشد، هر جدول نمادی در فایلهای اطلاعات اشکالزدایی پیوندیافته خوانده شده و هنگام دیساسمبل استفاده خواهد شد.
- -D
- --disassemble-all
- مشابه -d،
اما
محتویات
تمام
بخشهای
غیرخالی
غیر bss را
دیساسمبل
میکند، نه
فقط
بخشهایی
که انتظار
میرود
شامل
دستورالعمل
باشند.
میتوان از
-j برای
انتخاب
بخشهای
خاص
استفاده
کرد.
این گزینه همچنین تأثیر ظریفی بر دیساسمبل دستورالعملها در بخشهای کد دارد. هنگامی که گزینه -d فعال است، objdump فرض میکند هر نمادی که در بخش کد وجود دارد روی مرز بین دستورالعملها قرار دارد و از دیساسمبل در سراسر چنین مرزی خودداری میکند. با این حال هنگامی که گزینه -D فعال است، این فرض نادیده گرفته میشود. این بدان معناست که در صورت ذخیره دادهها در بخشهای کد، ممکن است خروجی -d و -D متفاوت باشد.
اگر معماری هدف ARM باشد، این گزینه همچنین این اثر را دارد که دیساسمبلر را وادار میکند تا دادههای یافتشده در بخشهای کد را به گونهای رمزگشایی کند که گویی دستورالعمل هستند.
توجه داشته باشید اگر گزینه --dwarf=follow-links فعال باشد، هر جدول نمادی در فایلهای اطلاعات اشکالزدایی پیوندیافته خوانده شده و هنگام دیساسمبل استفاده خواهد شد.
- --no-addresses
- هنگام دیساسمبل، آدرسها را در هر سطر یا برای نمادها و آفستهای بازآرایی (relocation offsets) چاپ نمیکند. در ترکیب با --no-show-raw-insn این گزینه میتواند برای مقایسه خروجی کامپایلر مفید باشد.
- --prefix-addresses
- هنگام دیساسمبل، آدرس کامل را در هر خط چاپ میکند. این قالب قدیمیتر دیساسمبل است.
- -EB
- -EL
- --endian={big|little}
- ترتیب بایتها (endianness) در فایلهای شیء را مشخص میکند. این گزینه فقط بر دیساسمبل تأثیر میگذارد و میتواند هنگام دیساسمبل کردن قالبی از فایل که اطلاعات ترتیب بایتها را توصیف نمیکند، مانند S-records، مفید باشد.
- -f
- --file-headers
- اطلاعات خلاصهای از سرآیند کلی هر یک از فایلهای objfile را نمایش میدهد.
- -F
- --file-offsets
- هنگام دیزاسمبل کردن بخشها، هرگاه یک نماد نمایش داده میشود، آفست فایلیِ (file offset) ناحیه دادهای که قرار است تخلیه (dump) شود را نیز نمایش میدهد. اگر از بایتهای صفر صرفنظر شده باشد، هنگام ازسرگیری دیزاسمبل، تعداد صفرهای نادیدهگرفتهشده و آفست فایلی مکانی که دیزاسمبل از آنجا ادامه مییابد را به کاربر اعلام میکند. هنگام تخلیه بخشها، آفست فایلی مکانی که تخلیه از آنجا آغاز میشود را نمایش میدهد.
- --file-start-context
- مشخص میکند که هنگام نمایش توأم کد منبع و دیزاسمبل (با فرض -S) از فایلی که هنوز نمایش داده نشده است، زمینه (context) تا ابتدای فایل گسترش یابد.
- -h
- --section-headers
- --headers
- اطلاعات
خلاصهای
از
سرایندهای
بخش (section headers)
فایل شیء را
نمایش
میدهد.
قطعههای فایل ممکن است به نشانیهای غیراستاندارد بازنشانی (relocate) شوند، برای نمونه با استفاده از گزینههای -Ttext، -Tdata یا -Tbss در ld. با این حال، برخی از قالبهای فایل شیء، مانند a.out، نشانی آغازین قطعههای فایل را ذخیره نمیکنند. در این وضعیتها، هرچند ld بخشها را به درستی بازنشانی میکند، استفاده از objdump -h برای فهرست کردن سرایندهای بخش فایل نمیتواند نشانیهای درست را نشان دهد. در عوض، نشانیهای معمول را نشان میدهد که برای مقصد ضمنی هستند.
توجه داشته باشید که در برخی موارد ممکن است برای یک بخش، هر دو صفت READONLY و NOREAD تنظیم شده باشند. در چنین مواردی صفت NOREAD اولویت دارد، اما objdump هر دو را گزارش میدهد چرا که وضعیت دقیق بیتهای پرچم ممکن است اهمیت داشته باشد.
- -H
- --help
- چاپ خلاصهای از گزینههای objdump و خروج.
- -i
- --info
- نمایش فهرستی از تمامی معماریها و قالبهای شیء موجود برای تعیین با -b یا -m.
- -j name
- --section=name
- اطلاعات بخش name را نمایش میدهد. این گزینه میتواند چندین بار مشخص شود.
- -L
- --process-links
- محتوای بخشهای غیر اشکالزداییِ (non-debug) موجود در فایلهای debuginfo جداگانه را که به فایل اصلی پیوند داده شدهاند نمایش میدهد. این گزینه بهطور خودکار مستلزم گزینه -WK است، و فقط بخشهایی نمایش داده خواهند شد که توسط گزینههای دیگر خط فرمان درخواست شده باشند.
- -l
- --line-numbers
- نمایش را (با استفاده از اطلاعات اشکالزدایی) با نام فایل و شماره خطوط کد منبعِ متناظر با کد شیء یا بازنشانیهای (relocs) نشان دادهشده برچسبگذاری میکند. تنها با -d، -D یا -r مفید است.
- -m machine
- --architecture=machine
- معماری
مورد
استفاده
هنگام
دیزاسمبل
کردن
فایلهای
شیء را مشخص
میکند. این
گزینه
میتواند
هنگام
دیزاسمبل
کردن
فایلهای
شیئی که
اطلاعات
معماری را
شرح
نمیدهند،
مانند S-records،
مفید باشد.
میتوانید
معماریهای
موجود را با
گزینه -i
فهرست کنید.
برای بیشتر معماریها این امکان وجود دارد که یک نام معماری و یک نام ماشین را که با دونقطه از هم جدا شدهاند وارد کرد. برای نمونه foo:bar به نوع ماشین bar در معماری foo اشاره دارد. این امر در صورتی که objdump برای پشتیبانی از چند معماری پیکربندی شده باشد میتواند مفید باشد.
اگر مقصد یک معماری ARM باشد، این سوئیچ یک اثر اضافی دارد: دیزاسمبل را تنها به آن دسته از دستورالعملهایی محدود میکند که توسط معماری مشخصشده توسط machine پشتیبانی میشوند. اگر استفاده از این سوئیچ به دلیل این است که فایل ورودی حاوی هیچ اطلاعات معماری نیست، اما مایلید تمام دستورالعملها دیزاسمبل شوند، از -marm استفاده کنید.
- -M options
- --disassembler-options=options
- اطلاعات
خاص مقصد را
به
دیزاسمبلر
ارسال
میکند.
تنها در
برخی مقاصد
پشتیبانی
میشود. در
صورت نیاز
به تعیین
بیش از یک
گزینه
دیزاسمبلر،
میتوان از
چندین
گزینه -M
استفاده
کرد یا
آنها را در
یک فهرست
جداشده با
کاما در
کنار هم
قرار داد.
برای ARC، گزینه dsp چاپ دستورالعملهای DSP را کنترل میکند، spfp چاپ دستورالعملهای ممیز شناور (FP) دقت یگانه FPX را انتخاب میکند، dpfp چاپ دستورالعملهای FP دقت دوگانه FPX را انتخاب میکند، quarkse_em چاپ دستورالعملهای ویژه QuarkSE-EM را انتخاب میکند، fpuda چاپ دستورالعملهای کمکی دقت دوگانه را انتخاب میکند، fpus چاپ دستورالعملهای FP دقت یگانه FPU را انتخاب میکند، در حالی که fpud چاپ دستورالعملهای FP دقت دوگانه FPU را انتخاب مینماید. علاوه بر این، میتوان با استفاده از hex انتخاب کرد که تمامی مقادیر بیواسطه (immediates) در مبنای شانزده چاپ شوند. بهطور پیشفرض، مقادیر بیواسطه کوتاه با استفاده از نمایش دهدهی چاپ میشوند، در حالی که مقادیر بیواسطه بلند به صورت شانزدهشانزدهی چاپ میگردند.
گزینه cpu=... به فرد امکان میدهد هنگام دیزاسمبل کردن دستورالعملها، یک ISA (مجموعه دستورالعمل معماری) خاص را اعمال کرده و مقدار -m یا هر آنچه در فایل ELF وجود دارد را نادیده بگیرد (override کند). این امر ممکن است برای انتخاب ISA مربوط به ARC EM یا HS مفید باشد، چرا که معماری آنها یکسان است و دیزاسمبلر برای تصمیمگیری در مورد اینکه کد مربوط به EM است یا HS، به دادههای سرایند خصوصی ELF متکی است. این گزینه ممکن است چندین بار مشخص شود - فقط آخرین مقدار استفاده خواهد شد. مقادیر معتبر همانند گزینه -mcpu=... در اسمبلر هستند.
اگر مقصد یک معماری ARM باشد، میتوان از این سوئیچ برای انتخاب مجموعه نامهای ثبات مورد استفاده در حین دیزاسمبل بهره برد. مشخص کردن -M reg-names-std (پیشفرض) نامهای ثبات را همانگونه که در مستندات مجموعه دستورالعمل ARM استفاده شده انتخاب میکند، اما ثبات ۱۳ را 'sp'، ثبات ۱۴ را 'lr' و ثبات ۱۵ را 'pc' مینامد. مشخص کردن -M reg-names-apcs مجموعه نامهای استفادهشده توسط استاندارد فراخوانی رویه ARM (ARM Procedure Call Standard) را انتخاب میکند، در حالی که مشخص کردن -M reg-names-raw صرفاً از r به همراه شماره ثبات استفاده خواهد کرد.
همچنین دو متغیر از طرح نامگذاری ثبات APCS وجود دارد که با -M reg-names-atpcs و -M reg-names-special-atpcs فعال میشوند و از قراردادهای نامگذاری استاندارد فراخوانی رویه ARM/Thumb استفاده میکنند (چه با نامهای ثبات معمولی و چه با نامهای ثبات ویژه).
این گزینه همچنین میتواند برای معماریهای ARM به کار رود تا دیزاسمبلر را با استفاده از سوئیچ --disassembler-options=force-thumb وادار کند که تمامی دستورالعملها را به عنوان دستورالعملهای Thumb تفسیر کند. این امر هنگام تلاش برای دیزاسمبل کردن کد Thumb تولید شده توسط دیگر کامپایلرها میتواند مفید باشد.
برای مقاصد AArch64 این سوئیچ میتواند برای تعیین این که آیا دستورالعملها به عنوان عمومیترین دستورالعمل با استفاده از گزینه -M no-aliases دیزاسمبل شوند یا اینکه یادداشتهای دستورالعمل باید به صورت توضیح (کامنت) در دیزاسمبل با استفاده از -M notes تولید شوند، به کار رود.
برای x86، برخی از گزینهها عملکردهای سوئیچ -m را تکرار میکنند، اما امکان کنترل دقیقتری را فراهم میآورند.
- "x86-64"
- "i386"
- "i8086"
- انتخاب دیزاسمبل برای معماری دادهشده.
- "intel"
- "att"
- انتخاب بین حالت نحو intel و حالت نحو AT&T.
- "amd64"
- "intel64"
- انتخاب بین AMD64 ISA و Intel64 ISA.
- "intel-mnemonic"
- "att-mnemonic"
- انتخاب بین حالت نمادین intel و حالت نمادین AT&T. نکته: "intel-mnemonic" مستلزم "intel" و "att-mnemonic" مستلزم "att" است.
- "addr64"
- "addr32"
- "addr16"
- "data32"
- "data16"
- اندازه پیشفرض آدرس و اندازه عملوند را تعیین میکند. اگر "x86-64"، "i386" یا "i8086" بعداً در رشته گزینهها ظاهر شوند، این پنج گزینه نادیده گرفته خواهند شد.
- "suffix"
- در حالت AT&T و همچنین برای مجموعه محدودی از دستورالعملها در حالت Intel، به دیزاسمبلر دستور میدهد که پسوند نمادین را حتی زمانی که پسوند از طریق عملوندها یا برای برخی دستورالعملهای خاص از پیشفرضهای حالت اجرا قابل استنباط است، چاپ کند.
برای PowerPC، آرگومان raw در -M دیزاسمبل دستورات سختافزاری را به جای نامهای مستعار انتخاب میکند. برای مثال، "rlwinm" را به جای "clrlwi" و "addi" را به جای "li" خواهید دید. تمام آرگومانهای -m برای gas که یک CPU را انتخاب میکنند، پشتیبانی میشوند. این آرگومانها عبارتند از: 403، 405، 440، 464، 476، 601، 603، 604، 620، 7400، 7410، 7450، 7455، 750cl، 821، 850، 860، a2، booke، booke32، cell، com، e200z2، e200z4، e300، e500، e500mc، e500mc64، e500x2، e5500، e6500، efs، power4، power5، power6، power7، power8، power9، power10، power11، ppc، ppc32، ppc64، ppc64bridge، ppcps، pwr، pwr2، pwr4، pwr5، pwr5x، pwr6، pwr7، pwr8، pwr9، pwr10، pwr11، pwrx، titan، vle، و future. 32 و 64 انتخاب پیشفرض یا قبلی پردازنده را تغییر داده و به ترتیب دستورات ۶۴-بیتی را غیرفعال و فعال میکنند. علاوه بر این، altivec، any، lsp، htm، vsx، spe و spe2 قابلیتهایی را به انتخاب پیشین یا پسین پردازنده اضافه میکنند. any هر آپکدی را که برای binutils شناخته شده باشد دیزاسمبل میکند، اما در مواردی که یک آپکد دو معنای مختلف یا آرگومانهای متفاوتی دارد، ممکن است خروجی دیزاسمبل مورد انتظار خود را نبینید. اگر بدون مشخص کردن یک CPU اقدام به دیزاسمبل کنید، یک مورد پیشفرض بر اساس اطلاعاتی که BFD از سرایندهای فایلهای شیء استخراج کرده انتخاب میشود، اما باز هم ممکن است نتیجه مطابق با انتظار شما نباشد.
برای RISC-V، گزینههای زیر پشتیبانی میشوند:
- "max"
- دیزاسمبل بدون بررسی رشته معماری. این یک حالت مبتنی بر بیشترین تلاش (best effort) است، بنابراین برای افزونههای همپوشان ISA، نخستین تطابق (که ممکن است در یک زمینه خاص نادرست باشد) برای رمزگشایی دستورالعمل به کار میرود. این گزینه زمانی مفید است که فایل ELF رشته ISA را ارائه ندهد و مانع از استنتاج خودکار زیرمجموعه ISA شود، و رشته پیشفرض یدکی ISA ("rv64gc") تمام دستورات موجود در فایل باینری را پوشش ندهد.
- "numeric"
- چاپ نامهای عددی ثباتها به جای نامهای ABI (برای مثال، چاپ "x2" به جای "sp").
- "no-aliases"
- دیزاسمبل تنها به دستورالعملهای استاندارد (canonical). به عنوان مثال، دستورات فشرده به همان شکل نمایش داده میشوند ("addi sp,sp,-128" به صورت "c.addi16sp sp,-128" خواهد بود).
- "priv-spec=SPEC"
- چاپ CSR مطابق با نسخه مشخصات سطح دسترسی (privilege spec) انتخابشده (برای مثال، 1.10، 1.11، 1.12، 1.13).
برای MIPS، این گزینه چاپ نامهای نمادین دستورالعملها و نام ثباتها را در دستورات دیزاسمبلشده کنترل میکند. گزینههای متعدد از موارد زیر را میتوان به صورت یک رشته جداشده با ویرگول مشخص کرد، و گزینههای نامعتبر نادیده گرفته میشوند:
- "no-aliases"
- چاپ نام نمادین «خام» دستورالعمل به جای نامهای نمادین شبهدستور. یعنی چاپ 'daddu' یا 'or' به جای 'move'، 'sll' به جای 'nop'، و غیره.
- "msa"
- دیزاسمبل دستورات MSA.
- "virt"
- دیزاسمبل دستورات ASE مجازیسازی.
- "xpa"
- دیزاسمبل دستورات ASE آدرس فیزیکی گسترشیافته (XPA).
- "gpr-names=ABI"
- چاپ نامهای GPR (ثباتهای همهمنظوره) متناسب با ABI مشخصشده. به طور پیشفرض، نامهای GPR بر اساس ABI باینریِ در حال دیزاسمبل انتخاب میشوند.
- "fpr-names=ABI"
- چاپ نامهای FPR (ثباتهای ممیز شناور) متناسب با ABI مشخصشده. به طور پیشفرض، شمارههای FPR به جای نامها چاپ میشوند.
- "cp0-names=ARCH"
- چاپ نامهای ثبات CP0 (کمکپردازنده کنترل سامانه؛ کمکپردازنده ۰) متناسب با پردازنده یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای ثبات CP0 بر اساس معماری و پردازنده باینریِ در حال دیزاسمبل انتخاب میشوند.
- "hwr-names=ARCH"
- چاپ نامهای HWR (ثبات سختافزاری مورد استفاده در دستور "rdhwr") متناسب با پردازنده یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای HWR بر اساس معماری و پردازنده باینریِ در حال دیزاسمبل انتخاب میشوند.
- "reg-names=ABI"
- چاپ نامهای GPR و FPR متناسب با ABI انتخابشده.
- "reg-names=ARCH"
- چاپ نام ثباتهای خاص پردازنده (نامهای ثبات CP0 و HWR) متناسب با پردازنده یا معماری انتخابشده.
برای هر یک از گزینههای فهرستشده در بالا، ABI یا ARCH را میتوان به عنوان numeric مشخص کرد تا به جای نامها، شمارههای انواع ثباتهای انتخابی چاپ شوند. میتوانید مقادیر موجود برای ABI و ARCH را با استفاده از گزینه --help فهرست کنید.
برای VAX، میتوانید آدرسهای ورودی تابع را با -M entry:0xf00ba مشخص کنید. میتوانید این گزینه را چندین بار به کار ببرید تا فایلهای باینری VAX که فاقد جدول نمادها هستند (مانند دامپهای ROM) به درستی دیزاسمبل شوند. در این موارد، در غیر این صورت ماسک ورودی تابع به عنوان دستورات VAX رمزگشایی میشد، که احتمالاً منجر به دیزاسمبل نادرست باقی تابع میگردید.
- --private-headers
- چاپ اطلاعات ویژه و مختص قالب فایل هدف (object file format). اطلاعات دقیق چاپشده به قالب فایل هدف بستگی دارد. برای برخی از قالبهای فایل هدف، هیچ اطلاعات اضافی چاپ نمیشود.
- -P options
- --private=options
- چاپ
اطلاعات
ویژه و مختص
قالب فایل
هدف.
آرگومان options
فهرستی از
گزینهها
است که با
کاما از هم
جدا
شدهاند و
به قالب
بستگی دارد
(فهرست
گزینهها
همراه با
پیام
راهنما
نمایش داده
میشود).
برای XCOFF، گزینههای موجود عبارتند از:
- "header"
- "aout"
- "sections"
- "syms"
- "relocs"
- "lineno,"
- "loader"
- "except"
- "typchk"
- "traceback"
- "toc"
- "ldinfo"
برای PE، گزینههای موجود عبارتند از:
- "header"
- "sections"
همه قالبهای هدف از این گزینه پشتیبانی نمیکنند. بهویژه قالب ELF از آن استفاده نمیکند.
- -r
- --reloc
- چاپ مدخلهای بازآرایی (relocation entries) فایل. در صورت استفاده همراه با -d یا -D، بازآراییها بهصورت پراکنده و در میان کد دیساسمبلشده چاپ میشوند.
- -R
- --dynamic-reloc
- چاپ
مدخلهای
بازآرایی
پویا (dynamic relocation entries)
فایل. این
قابلیت
تنها برای
اشیاء پویا
(dynamic objects)، مانند
انواع
مشخصی از
کتابخانههای
مشترک (shared libraries)،
کاربرد
دارد.
همانند -r،
در صورت
استفاده
همراه با -d
یا -D،
بازآراییها
بهصورت
پراکنده در
میان کد
دیساسمبلشده
چاپ
میشوند.
نکته: ابزار objdump از نمایش بازآراییهای نوع RELR پشتیبانی نمیکند. این موارد را میتوان با برنامه readelf نمایش داد.
- -s
- --full-contents
- نمایش محتوای کامل بخشها (sections)، که اغلب در ترکیب با -j برای درخواست بخشهای مشخصی استفاده میشود. بهطور پیشفرض، تمام بخشهای غیرخالی و غیر bss نمایش داده میشوند. بهطور پیشفرض هر بخش فشردهشده به شکل فشرده نمایش داده خواهد شد. برای مشاهده محتوا در حالت غیرفشرده (decompressed)، گزینه -Z را به خط فرمان اضافه کنید.
- -S
- --source
- در صورت امکان، کد منبع (source code) را بهصورت آمیخته با دیساسمبل نمایش میدهد. مستلزم -d است.
- --show-all-symbols
- هنگام دیساسمبل کردن، تمام نمادهایی (symbols) که با آدرس دادهشده تطابق دارند نمایش داده میشوند، نه فقط نماد اول.
- --source-comment[=txt]
- مشابه گزینه -S عمل میکند، اما تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشته توضیحات (comment) است که میتواند برای تمایز کد اسمبلی از کد منبع به کار رود. اگر txt مشخص نشود، رشته پیشفرض "# " (هش به همراه یک فاصله) استفاده خواهد شد.
- --prefix=prefix
- مشخص کردن prefix برای افزودن به مسیرهای مطلق در هنگام استفاده همراه با -S.
- --prefix-strip=level
- مشخص میکند چه تعداد از نامهای دایرکتوری ابتدایی از مسیرهای مطلقِ ثابت (hardwired) حذف شوند. این گزینه بدون --prefix=prefix هیچ تأثیری ندارد.
- --show-raw-insn
- هنگام دیساسمبل کردن دستورالعملها، دستورالعمل را علاوه بر حالت نمادین، در قالب هگزادسیمال نیز چاپ میکند. این رفتار پیشفرض است، مگر در مواردی که --prefix-addresses استفاده شده باشد.
- --no-show-raw-insn
- هنگام دیساسمبل کردن دستورالعملها، بایتهای دستورالعمل را چاپ نمیکند. این رفتار هنگام استفاده از --prefix-addresses حالت پیشفرض است.
- --insn-width=width
- هنگام دیساسمبل کردن دستورالعملها، تعداد width بایت را در یک خط نمایش میدهد.
- --visualize-jumps[=color|=extended-color|=off]
- دیداریسازی
(visualize)
پرشهایی
که درون یک
تابع باقی
میمانند،
با رسم
طرحهای
اَسکی (ASCII art)
میان
آدرسهای
مبدأ و
مقصد.
آرگومان
اختیاری =color
با استفاده
از رنگهای
ساده
پایانه به
خروجی رنگ
اضافه
میکند. به
عنوان
جایگزین،
آرگومان
=extended-color با
استفاده از
رنگهای
۸بیتی رنگ
اضافه
میکند،
اما ممکن
است این
رنگها در
همه
پایانهها
کار نکنند.
اگر لازم باشد گزینه visualize-jumps را پس از فعالسازی قبلی غیرفعال کنید، از visualize-jumps=off استفاده کنید.
- --disassembler-color=off
- --disassembler-color=terminal
- --disassembler-color=on|color|colour
- --disassembler-color=extended|extended-color|extended-colour
- استفاده از
برجستهسازی
نحوی رنگی (syntax
highlighting) را در
خروجی
دیساسمبل
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض از
طریق
گزینهای
در زمان
پیکربندی
(configure time) تعیین
میشود.
توجه داشته
باشید که
تمام
معماریها
از
برجستهسازی
نحوی رنگی
پشتیبانی
نمیکنند و
بسته به
پایانه
مورد
استفاده،
خروجی رنگی
ممکن است در
عمل خوانا
نباشد.
آرگومان on با استفاده از رنگهای ساده پایانه رنگها را اضافه میکند.
آرگومان terminal نیز همین کار را انجام میدهد، اما تنها در صورتی که دستگاه خروجی یک پایانه باشد.
آرگومان extended-color مشابه آرگومان on است، اما از رنگهای ۸ بیتی استفاده میکند. این رنگها ممکن است روی تمام پایانهها کار نکنند.
آرگومان off دیساسمبل رنگی را غیرفعال میکند..IP -W[lLiaprmfFsoORtUuTgAckK] 4
- --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]
- محتویات بخشهای اشکالزدایی DWARF را در فایل (در صورت وجود) نمایش میدهد. بخشهای اشکالزدایی فشردهشده پیش از نمایش، بهطور خودکار (بهصورت موقت) از حالت فشرده خارج میشوند. اگر یک یا چند حرف یا واژه اختیاری در ادامه این سوئیچ بیاید، تنها همان نوع (انواع) از دادهها نمایش داده (dump) خواهند شد. این حروف و واژهها به اطلاعات زیر اشاره دارند:
- "a"
- "=abbrev"
- محتویات بخش .debug_abbrev را نمایش میدهد.
- "A"
- "=addr"
- محتویات بخش .debug_addr را نمایش میدهد.
- "c"
- "=cu_index"
- محتویات بخشهای .debug_cu_index و/یا .debug_tu_index را نمایش میدهد.
- "f"
- "=frames"
- محتویات خام بخش .debug_frame را نمایش میدهد.
- "F"
- "=frames-interp"
- محتویات تفسیرشده بخش .debug_frame را نمایش میدهد.
- "g"
- "=gdb_index"
- محتویات بخشهای .gdb_index و/یا .debug_names را نمایش میدهد.
- "i"
- "=info"
- محتویات بخش .debug_info را نمایش میدهد. نکته: خروجی حاصل از این گزینه میتواند با استفاده از گزینههای --dwarf-depth و --dwarf-start نیز محدود شود.
- "k"
- "=links"
- محتویات بخشهای .gnu_debuglink، .gnu_debugaltlink و .debug_sup را در صورت وجود نمایش میدهد. همچنین هرگونه پیوند به فایلهای شیء مجزای DWARF (یا همان dwo) را در صورتی که توسط صفتهای DW_AT_GNU_dwo_name یا DW_AT_dwo_name در بخش .debug_info مشخص شده باشند، نمایش میدهد.
- "K"
- "=follow-links"
- محتویات هر
یک از
بخشهای
اشکالزدایی
انتخابشده
را که در
فایل(های)
مجزای
پیوندخورده
حاوی
اطلاعات
اشکالزدایی
یافت شوند،
نمایش
میدهد. در
صورتی که یک
بخش
اشکالزدایی
در بیش از
یک فایل
وجود داشته
باشد، این
عمل ممکن
است منجر به
نمایش
چندین نسخه
از همان بخش
اشکالزدایی
شود.
علاوه بر این، هنگام نمایش صفتهای DWARF، اگر قالبی یافت شود که به فایل مجزای اطلاعات اشکالزدایی ارجاع میدهد، محتویات ارجاعشده نیز نمایش داده خواهند شد.
نکته - در برخی توزیعها این گزینه بهطور پیشفرض فعال است. این گزینه را میتوان از طریق گزینه اشکالزدایی N غیرفعال کرد. پیشفرض را میتوان هنگام پیکربندی binutils از طریق گزینههای --enable-follow-debug-links=yes یا --enable-follow-debug-links=no تعیین کرد. در صورت عدم استفاده از این گزینهها، حالت پیشفرض، فعال بودن دنبال کردن پیوندهای اشکالزدایی است.
نکته - اگر پشتیبانی از پروتکل debuginfod هنگام ساخت binutils فعال شده باشد، این گزینه شامل تلاش برای برقراری ارتباط با سرورهای debuginfod ذکرشده در متغیر محیطی DEBUGINFOD_URLS نیز خواهد بود. برطرف کردن و دریافت پاسخ ممکن است مدتی طول بکشد. این رفتار را میتوان از طریق گزینه اشکالزدایی =do-not-use-debuginfod غیرفعال کرد.
- "N"
- "=no-follow-links"
- دنبال کردن پیوندها به فایلهای مجزای اطلاعات اشکالزدایی را غیرفعال میکند.
- "D"
- "=use-debuginfod"
- در صورت نیاز به دنبال کردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را فعال میکند. این رفتار پیشفرض است.
- "E"
- "=do-not-use-debuginfod"
- در صورت نیاز به دنبال کردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را غیرفعال میکند.
- "l"
- "=rawline"
- محتویات بخش .debug_line را با قالبی خام (raw) نمایش میدهد.
- "L"
- "=decodedline"
- محتویات تفسیرشده بخش .debug_line را نمایش میدهد.
- "m"
- "=macro"
- محتویات بخشهای .debug_macro و/یا .debug_macinfo را نمایش میدهد.
- "o"
- "=loc"
- محتوای بخشهای .debug_loc و/یا .debug_loclists را نمایش میدهد.
- "O"
- "=str-offsets"
- محتوای بخش .debug_str_offsets را نمایش میدهد.
- "p"
- "=pubnames"
- محتوای بخشهای .debug_pubnames و/یا .debug_gnu_pubnames را نمایش میدهد.
- "r"
- "=aranges"
- محتوای بخش .debug_aranges را نمایش میدهد.
- "R"
- "=Ranges"
- محتوای بخشهای .debug_ranges و/یا .debug_rnglists را نمایش میدهد.
- "s"
- "=str"
- محتوای بخشهای .debug_str، .debug_line_str و/یا .debug_str_offsets را نمایش میدهد.
- "t"
- "=pubtype"
- محتوای بخشهای .debug_pubtypes و/یا .debug_gnu_pubtypes را نمایش میدهد.
- "T"
- "=trace_aranges"
- محتوای بخش .trace_aranges را نمایش میدهد.
- "u"
- "=trace_abbrev"
- محتوای بخش .trace_abbrev را نمایش میدهد.
- "U"
- "=trace_info"
- محتوای بخش .trace_info را نمایش میدهد.
نکته: نمایش محتوای بخشهای .debug_static_funcs، .debug_static_vars و debug_weaknames در حال حاضر پشتیبانی نمیشود.
- --dwarf-depth=n
- تخلیهٔ (dump)
محتوای بخش
".debug_info" را
به n فرزند
محدود
میکند. این
گزینه فقط
با --debug-dump=info
کاربرد
دارد.
پیشفرض
چاپ همهٔ
DIEها است؛
مقدار
ویژهٔ 0
برای n نیز
همین اثر را
خواهد داشت.
با یک مقدار غیر صفر برای n، مقادیر DIE در عمق n یا عمیقتر از آن چاپ نخواهند شد. بازهٔ n بر مبنای صفر است.
- --dwarf-start=n
- تنها DIEهایی
را که از DIE
شمارهٔ n
آغاز
میشوند
چاپ میکند.
این گزینه
فقط همراه
با --debug-dump=info
کاربرد
دارد.
در صورت تعیین، این گزینه از چاپ هرگونه اطلاعات سرایند و تمامی DIEهای پیش از DIE شمارهٔ n جلوگیری میکند. تنها همنیاها (siblings) و فرزندان DIE مشخصشده چاپ خواهند شد.
این گزینه را میتوان همراه با --dwarf-depth استفاده کرد.
- --dwarf-check
- بررسیهای تکمیلی برای سازگاری و یکپارچگی اطلاعات Dwarf را فعال میکند.
- --ctf[=section]
- محتوای بخش
CTF مشخصشده
را نمایش
میدهد.
بخشهای CTF
خود شامل
چندین
زیربخش
هستند که
همگی به
ترتیب
نمایش داده
میشوند.
بهطور پیشفرض، بخشی با نام .ctf را که نام خروجی تولیدشده توسط ld است، نمایش میدهد.
- --ctf-parent=member
- اگر بخش CTF حاوی انواعی با تعریف مبهم باشد، از یک آرشیو متشکل از چندین دیکشنری CTF تشکیل میشود که همگی از یک دیکشنریِ شامل انواع غیرمبهم ارثبری میکنند. این عضو بهطور پیشفرض مانند بخش دربرگیرندهاش .ctf نام دارد، اما میتوان این نام را با استفاده از تابع "ctf_link_set_memb_name_changer" در زمان پیوند تغییر داد. هنگام بررسی آرشیوهای CTF ساختهشده توسط پیونددهندهای که از تغییردهندهٔ نام برای تغییر نام عضو والد آرشیو استفاده کرده است، میتوان از --ctf-parent برای تعیین نام استفادهشده برای والد بهره برد.
- --ctf-parent-section=section
- این گزینه امکان میدهد تا برای دیکشنری والد CTF که حاوی انواع غیرمبهم است، بخشی کاملاً متفاوت از دیکشنریهای فرزند که بخشهای مبهم باقیمانده را دربردارند انتخاب کنید. پیونددهنده اشیاء ELF با این ساختار را تولید نمیکند، اما برخی پیونددهندههای شخص ثالث ممکن است چنین کنند. همچنین این قابلیت برای بررسی CTFهایی که در قالب چندین فایل خام ذخیره شدهاند تا با objcopy ترکیب شوند مناسب است؛ چرا که objcopy میتواند آنها را در بخشهای متفاوتی از ELF قرار دهد، اما نه در اعضای متفاوتی از یک دیکشنری منفرد CTF.
- --sframe[=section]
- محتوای بخش
SFrame مشخصشده
را نمایش
میدهد.
بهطور پیشفرض، بخشی با نام .sframe را که نام خروجی تولیدشده توسط ld است نمایش میدهد.
- -G
- --stabs
- محتوای کامل هر بخش درخواستشده را نمایش میدهد. محتوای بخشهای .stab، .stab.index و .stab.excl را از یک فایل ELF نمایش میدهد. این گزینه تنها در سیستمهایی (مانند Solaris 2.0) کاربرد دارد که ورودیهای جدول نماد اشکالزدایی ".stab" در یک بخش ELF حمل میشوند. در اکثر قالبهای فایل دیگر، ورودیهای جدول نماد اشکالزدایی با نمادهای پیوند در هم تنیده شدهاند و در خروجی --syms قابل مشاهده هستند.
- --start-address=address
- نمایش دادهها را از نشانی مشخصشده آغاز میکند. این امر بر خروجی گزینههای -d، -r و -s تأثیر میگذارد.
- --stop-address=address
- نمایش دادهها را در نشانی مشخصشده متوقف میکند. این امر بر خروجی گزینههای -d، -r و -s تأثیر میگذارد.
- -t
- --syms
- درایههای
جدول
نمادهای (symbol table)
فایل را چاپ
میکند. این
خروجی شبیه
به اطلاعات
ارائهشده
توسط
برنامه nm
است، اگرچه
قالب نمایش
آن متفاوت
است. قالب
خروجی به
قالب فایلی
که اطلاعات
آن استخراج
میشود
بستگی
دارد، اما
دو نوع اصلی
وجود دارد.
یکی از
آنها به
این شکل
است:
[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
که در آن عدد درون قلابها، شماره درایه در جدول نمادها است، شماره sec شماره بخش (section)، مقدار fl بیتهای پرچم نماد، شماره ty نوع نماد، شماره scl رده ذخیرهسازی نماد (storage class) و مقدار nx تعداد درایههای کمکی مرتبط با نماد است. دو فیلد آخر نیز مقدار نماد و نام آن هستند.
قالب رایج دیگر خروجی که معمولاً در فایلهای مبتنی بر ELF دیده میشود، به این شکل است:
00000000 l d .bss 00000000 .bss 00000000 g .text 00000000 fred
در اینجا عدد نخست، مقدار نماد است (که گاهی به عنوان نشانی آن شناخته میشود). فیلد بعدی در واقع مجموعهای از نویسهها و فاصلهها است که بیتهای پرچم تنظیمشده روی نماد را نشان میدهند. این نویسهها در ادامه توضیح داده شدهاند. سپس بخشی که نماد با آن مرتبط است نمایش داده میشود، یا *ABS* در صورتی که بخش مطلق باشد (یعنی به هیچ بخشی متصل نباشد)، یا *UND* در صورتی که در فایل در حال پردازش به آن ارجاع داده شده باشد اما در آنجا تعریف نشده باشد.
پس از نام بخش، فیلد دیگری قرار دارد؛ عددی که برای نمادهای مشترک (common symbols) میزان همترازی (alignment) و برای سایر نمادها اندازه (size) را مشخص میکند. در نهایت نام نماد نمایش داده میشود.
نویسههای پرچم به ۷ گروه به شرح زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (یک فاصله) یا هم سراسری و هم محلی (!) است. یک نماد میتواند به دلایل گوناگونی نه محلی باشد و نه سراسری؛ به عنوان مثال به این دلیل که برای اشکالزدایی استفاده میشود، اما اگر همزمان هم محلی و هم سراسری باشد احتمالاً نشاندهنده یک باگ است. نمادهای سراسری یکتا یک افزونه GNU برای مجموعه اتصالات استاندارد نمادهای ELF هستند. برای چنین نمادی، پیونددهنده پویا (dynamic linker) اطمینان حاصل میکند که در سراسر فرایند، تنها یک نماد با این نام و نوع مورد استفاده قرار گیرد.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهنده یک سازنده (C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد عادی (یک فاصله) است. نام نماد هشدار، پیامی است که در صورت ارجاع به نماد پس از نماد هشدار نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، تابعی که باید در حین پردازش بازنشانی (reloc) ارزیابی شود (i)، یا یک نماد عادی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D)، یا یک نماد عادی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O)، یا صرفاً یک نماد عادی (یک فاصله) است.
- -T
- --dynamic-syms
- درایههای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه فقط
برای
شیءهای
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی
معنا دارد.
این کار
شبیه به
اطلاعات
ارائهشده
توسط
برنامه nm
هنگام
استفاده از
گزینه -D (--dynamic)
است.
قالب خروجی شبیه به خروجی حاصل از گزینه --syms است، با این تفاوت که فیلدی اضافی پیش از نام نماد درج میشود که اطلاعات نسخه مرتبط با نماد را ارائه میدهد. اگر نسخه مورد نظر همان نسخه پیشفرضی باشد که هنگام حل ارجاعات بدون نسخه به نماد استفاده میشود، به همان شکل نمایش داده میشود؛ در غیر این صورت درون پرانتز قرار میگیرد.
- --special-syms
- هنگام نمایش نمادها، نمادهایی که توسط هدف (target) به نوعی خاص تلقی میشوند و به طور معمول مورد توجه کاربر نیستند را نیز شامل میشود.
- -U [d|i|l|e|x|h]
- --unicode=[default|invalid|locale|escape|hex|highlight]
- نحوه نمایش
نویسههای
چندبایتی
با کدگذاری
UTF-8 در
رشتهها را
کنترل
میکند.
حالت
پیشفرض
(--unicode=default) این
است که هیچ
رفتار خاصی
با آنها
انجام نشود.
گزینه --unicode=locale
توالی را بر
اساس محلی (locale)
فعلی نمایش
میدهد که
ممکن است از
آنها
پشتیبانی
بکند یا
نکند.
گزینههای
--unicode=hex و --unicode=invalid
آنها را به
عنوان
توالی
بایتهای
هگزادسیمال
محصور در
علامتهای
کوچکتر/بزرگتر
یا
آکولادها
نمایش
میدهند.
گزینه --unicode=escape آنها را به صورت توالیهای گریز (\uxxxx) و گزینه --unicode=highlight آنها را به صورت توالیهای گریز متمایز با رنگ قرمز نمایش میدهد (در صورت پشتیبانی دستگاه خروجی). هدف از رنگآمیزی، جلب توجه به وجود توالیهای یونیکد در جاهایی است که ممکن است انتظار حضورشان نرود.
- -V
- --version
- شماره نسخه objdump را چاپ کرده و خارج میشود.
- -x
- --all-headers
- تمام اطلاعات موجود در سرایند، از جمله جدول نمادها و درایههای بازنشانی (relocation) را نمایش میدهد. استفاده از -x معادل تعیین تمامی گزینههای -a -f -h -p -r -t است.
- -w
- --wide
- برخی خطوط را برای دستگاههای خروجی دارای بیش از ۸۰ ستون قالببندی میکند. همچنین نامهای نمادها را هنگام نمایش کوتاه (truncate) نمیکند.
- -z
- --disassemble-zeroes
- بهطور معمول خروجی دیساسمبل از روی بلوکهای صفر رد میشود. این گزینه به دیساسمبلر هدایت میدهد تا آن بلوکها را درست مانند هر دادهٔ دیگری دیساسمبل کند.
- -Z
- --decompress
- گزینهٔ -Z برای استفاده به همراه گزینهٔ -s در نظر گرفته شده است. این گزینه به objdump دستور میدهد تا پیش از نمایش محتوای هر بخش فشردهشده، آن را از حالت فشرده خارج کند.
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
بهجای
گزینهٔ
اصلی @file
جایگزین
میشوند.
اگر file وجود
نداشته
باشد یا
قابل
خواندن
نباشد، با
گزینه
بهصورت
لفظی رفتار
میشود و
حذف نخواهد
شد.
گزینهها در file با فاصله (whitespace) از یکدیگر جدا میشوند. یک نویسهٔ فاصله میتواند با قرار دادن کل گزینه درون علامتهای نقلقول تکی یا دوتایی، درون یک گزینه گنجانده شود. هر نویسهای (از جمله بکاسلش) میتواند با قرار دادن یک بکاسلش در ابتدای آن وارد شود. خود file میتواند شامل گزینههای @file بیشتری باشد؛ هر یک از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
همچنین ببینید (SEE ALSO)
nm(1)، readelf(1) و مدخلهای Info برای binutils.
کپیرایت و تکثیر (COPYRIGHT)
کپیرایت (c) 1991-2025 Free Software Foundation, Inc.
مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ متأخرتری که توسط بنیاد نرمافزارهای آزاد منتشر شده است، بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد و بدون متنهای پشت جلد اعطا میشود. نسخهای از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-01-23 | binutils-2.45.1 |