| 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 را به آدرس همهٔ بخشها اضافه میکند. این گزینه زمانی مفید است که آدرس بخشها با جدول نمادها مطابقت نداشته باشد، امری که ممکن است هنگام قرار دادن بخشها در آدرسهای مشخص در قالبی رخ دهد که توانایی بازنمایی آدرسهای بخش را ندارد، مانند 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
- محدودیتی
را بر میزان
بازگشت (recursion)
انجامشده
هنگام
کدگشایی
رشتهها
فعال یا
غیرفعال
میکند. از
آنجا که
قالبهای
درهمسازی
نام سطوح
بازگشت
نامحدودی
را مجاز
میدانند،
ممکن است
رشتههایی
ایجاد شوند
که
رمزگشایی
آنها تمام
فضای پشتهٔ
موجود در
ماشین
میزبان را
تمام کرده و
موجب خطای
حافظه (memory fault)
شود. این
محدودیت با
محدود کردن
بازگشت به
۲۰۴۸ سطح
تودرتو سعی
در جلوگیری
از این
اتفاق دارد.
پیشفرض این است که این محدودیت فعال باشد، اما غیرفعال کردن آن ممکن است برای بازگردانی نامهای واقعاً پیچیده لازم باشد. با این حال توجه داشته باشید که اگر محدودیت بازگشت غیرفعال شود، اتمام فضای پشته محتمل است و هرگونه گزارش باگ دربارهٔ چنین رخدادی رد خواهد شد.
- -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) چاپ نمیکند. در ترکیب با --no-show-raw-insn، این گزینه میتواند برای مقایسهٔ خروجی کامپایلر مفید باشد.
- --prefix-addresses
- هنگام دیساسمبل، آدرس کامل را در هر خط چاپ میکند. این قالب قدیمیتر دیساسمبل است.
- -EB
- -EL
- --endian={big|little}
- ترتیب بایتها (endianness) در فایلهای شیء را مشخص میکند. این گزینه فقط بر دیساسمبل اثر میگذارد. میتواند هنگام دیساسمبل قالبی از فایل که اطلاعات ترتیب بایت را توصیف نمیکند، مانند S-records، مفید باشد.
- -f
- --file-headers
- نمایش اطلاعات خلاصه از سرآیند کلی هر یک از فایلهای objfile.
- -F
- --file-offsets
- هنگام واسازی بخشها، هر زمان که نمادی نمایش داده میشود، آفست پروندهایِ ناحیهٔ دادهای را که در شرف تخلیه (dump) است نیز نمایش میدهد. اگر صفرهای متوالی نادیده گرفته میشوند، هنگام ازسرگیری واسازی، تعداد صفرهای نادیدهگرفتهشده و آفست پروندهایِ مکانی که واسازی از آنجا از سر گرفته میشود به کاربر اعلام میگردد. هنگام تخلیهٔ بخشها، آفست پروندهایِ مکانی که تخلیه از آنجا آغاز میشود نمایش مییابد.
- --file-start-context
- مشخص میکند که هنگام نمایش درهمآمیختهٔ کد منبع و واسازی (فرض بر وجود -S است) از پروندهای که تاکنون نمایش داده نشده، بافتار تا ابتدای پرونده گسترش یابد.
- -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
- خروجی نمایشیافته را (با استفاده از اطلاعات خطایابی) با نام پرونده و شماره خطوط کد مبدأ متناظر با کد شیء یا بازآراییهای نشاندادهشده برچسبگذاری میکند. تنها همراه با -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 چاپ دستورهای ممیز شناور دقت یگانهٔ FPX را انتخاب میکند، dpfp چاپ دستورهای ممیز شناور دقت دوگانهٔ FPX را برمیگزیند، quarkse_em چاپ دستورهای خاص QuarkSE-EM را مشخص میکند، fpuda چاپ دستورهای کمکی دقت دوگانه را فعال میسازد، fpus چاپ دستورهای ممیز شناور دقت یگانهٔ FPU را انتخاب میکند، در حالی که fpud چاپ دستورهای ممیز شناور دقت دوگانهٔ FPU را برمیگزیند. علاوه بر این، با استفاده از hex میتوان ترتیبی داد که همهٔ مقادیر بیواسطه (immediates) در مبنای شانزده چاپ شوند. به طور پیشفرض، مقادیر بیواسطهٔ کوتاه با نمایش دهدهی چاپ میشوند، در حالی که مقادیر بیواسطهٔ بلند در مبنای شانزده چاپ خواهند شد.
گزینهٔ cpu=... امکان تحمیل یک ISA خاص را هنگام واسازی دستورها فراهم میآورد و مقدار -m یا هر آنچه در پروندهٔ ELF قرار دارد را بازنویسی میکند. این قابلیت میتواند برای انتخاب ISA مربوط به ARC EM یا HS مفید باشد، چرا که معماری آنها یکسان است و واساز به دادههای خصوصیِ سرایند ELF اتکا میکند تا تصمیم بگیرد کد برای EM است یا HS. این گزینه ممکن است چندین بار مشخص شود - تنها آخرین مقدار اعمال خواهد شد. مقادیر معتبر همان مقادیر مربوط به گزینهٔ -mcpu=... اسمبلر هستند.
اگر هدف معماری ARM باشد، میتوان از این گزینه برای انتخاب مجموعه نامهای ثباتِ مورد استفاده در حین واسازی بهره برد. مشخص کردن -M reg-names-std (حالت پیشفرض) نامهای ثبات را همانگونه که در مستندات مجموعه دستورالعمل ARM آمده انتخاب میکند، ولی ثبات ۱۳ با عنوان 'sp'، ثبات ۱۴ با عنوان 'lr' و ثبات ۱۵ با عنوان 'pc' نامیده میشوند. تعیین -M reg-names-apcs مجموعه نامهای استفادهشده در استاندارد فراخوانی رویهٔ ARM را انتخاب میکند، در حالی که تعیین -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 که یک پردازنده را انتخاب میکنند، پشتیبانی میشوند. این آرگومانها عبارتند از: 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 را دیزاسمبل میکند، اما در مواردی که یک آپکد دو معنای متفاوت یا آرگومانهای مختلفی داشته باشد، ممکن است خروجی دیزاسمبل مورد انتظار خود را نبینید. اگر بدون تعیین پردازنده دیزاسمبل کنید، یک گزینهٔ پیشفرض از اطلاعات جمعآوریشده توسط 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"
- چاپ یادافزار دستورالعمل «خام» ('raw') به جای یادافزار برخی شبهدستورالعملها. یعنی چاپ '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
- اطلاعات مختص به قالب پرونده شیء را چاپ میکند. اطلاعات دقیق چاپشده به قالب پرونده شیء بستگی دارد. برای برخی از قالبهای پرونده شیء، اطلاعات اضافهای چاپ نمیشود.
- -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) پرونده را چاپ میکند. در صورت استفاده به همراه -d یا -D، بازآراییها لابهلای کد واسرهمشده چاپ میشوند.
- -R
- --dynamic-reloc
- ورودیهای
بازآرایی
پویای
پرونده را
چاپ میکند.
این مورد
فقط برای
اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی
معنا دارد.
همانند -r،
در صورت
استفاده به
همراه -d یا
-D،
بازآراییها
لابهلای
کد
واسرهمشده
چاپ
میشوند.
نکته: objdump از نمایش بازآراییهای نوع RELR پشتیبانی نمیکند. این بازآراییها توسط برنامهٔ readelf قابل نمایش هستند.
- -s
- --full-contents
- محتوای کامل بخشها (sections) را نمایش میدهد؛ اغلب در ترکیب با -j برای درخواست بخشهای مشخصی استفاده میشود. بهطور پیشفرض، تمام بخشهای غیرخالی و غیر bss نمایش داده میشوند. همچنین بهطور پیشفرض، هر بخش فشردهشده به همان صورت فشرده نمایش داده خواهد شد. برای مشاهدهٔ محتویات به صورت از حالت فشرده خارجشده، گزینهٔ -Z را به خط فرمان اضافه کنید.
- -S
- --source
- در صورت امکان، کد منبع را آمیخته با کد واسرهمشده نمایش میدهد. متضمن -d است.
- --show-all-symbols
- هنگام واسرهمسازی، تمام نمادهایی را که با یک نشانی معین تطابق دارند نمایش میدهد، نه فقط نماد اول را.
- --source-comment[=txt]
- مانند گزینهٔ -S است، اما تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشتهٔ توضیحات خواهد بود که میتواند برای تمایز کد اسمبلر از کد منبع استفاده شود. اگر txt ارائه نشود، رشتهٔ پیشفرض "# " (هش به همراه یک فاصله) استفاده خواهد شد.
- --prefix=prefix
- مقدار prefix را برای افزودن به مسیرهای مطلق در هنگام استفاده با -S مشخص میکند.
- --prefix-strip=level
- مشخص میکند که چه تعداد از نامهای دایرکتوری ابتدایی از مسیرهای مطلقِ ثابت حذف شوند. این گزینه بدون --prefix=prefix هیچ تأثیری ندارد.
- --show-raw-insn
- هنگام واسرهمسازی دستورالعملها، دستورالعمل را علاوه بر قالب نمادین، به صورت هگزادسیمال نیز چاپ میکند. این رفتار پیشفرض است مگر هنگامی که از --prefix-addresses استفاده شود.
- --no-show-raw-insn
- هنگام واسرهمسازی دستورالعملها، بایتهای دستورالعمل را چاپ نمیکند. این حالت، رفتار پیشفرض هنگام استفاده از --prefix-addresses است.
- --insn-width=width
- هنگام واسرهمسازی دستورالعملها، تعداد width بایت را در یک خط نمایش میدهد.
- --visualize-jumps[=color|=extended-color|=off]
- پرشهایی
را که درون
یک تابع
باقی
میمانند
با رسم هنر
اسکی (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
- استفاده از
برجستهسازی
رنگی نحو را
در خروجی
واسرهمسازی
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض از
طریق
گزینهای
در زمان
پیکربندی
تعیین
میشود.
توجه داشته
باشید که
همهٔ
معماریها
از
برجستهسازی
رنگی نحو
پشتیبانی
نمیکنند و
بسته به
پایانهٔ
مورد
استفاده،
ممکن است
خروجی رنگی
در عمل
خوانا
نباشد.
آرگومان 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 موجود در فایل را (در صورت وجود) نمایش میدهد. بخشهای اشکالزدایی فشردهشده پیش از نمایش، به صورت خودکار (موقتاً) از حالت فشرده خارج میشوند. اگر یک یا چند حرف یا کلمه اختیاری پس از این سوییچ بیاید، تنها همان نوع (یا انواع) دادهها نمایش داده خواهند شد. حروف و کلمات به اطلاعات زیر اشاره دارند:
- "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 تعیین کرد. در صورت عدم استفاده از این موارد، حالت پیشفرض بر روی فعال بودن دنبال کردن پیوندهای اشکالزدایی خواهد بود.
نکته - اگر در زمان ساخت binutils پشتیبانی از پروتکل debuginfod فعال شده باشد، این گزینه شامل تلاشی برای برقراری ارتباط با هر سرور 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 را به قالب خام نمایش میدهد.
- "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 بر پایه صفر (zero-based) است.
- --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 شامل انواعی با تعریف مبهم باشد، از یک آرشیو شامل چندین فرهنگنامه (dictionary) CTF تشکیل خواهد شد که همگی از یک فرهنگنامه حاوی انواع غیرمبهم ارثبری میکنند. نام این عضو بهطور پیشفرض مانند بخش حاوی آن .ctf است، اما میتوان با استفاده از تابع "ctf_link_set_memb_name_changer" در زمان پیوند (link time) این نام را تغییر داد. هنگام بررسی آرشیوهای 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
- ورودیهای
جدول
نمادهای
فایل را چاپ
میکند. این
اطلاعات
شبیه به
موارد
ارائهشده
توسط
برنامهٔ nm
است، اگرچه
قالب نمایش
متفاوت است.
قالب خروجی
به قالب
فایلی که
محتوای آن
واکشی (dump)
میشود
بستگی
دارد، اما
دو نوع اصلی
وجود دارد.
یکی از
آنها به
این صورت
است:
[ 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 کلاس حافظهٔ نماد و مقدار nx تعداد ورودیهای کمکی مرتبط با نماد است. دو فیلد آخر، مقدار نماد و نام آن هستند.
قالب خروجی رایج دیگر که معمولاً در فایلهای مبتنی بر ELF دیده میشود، بدین صورت است:
00000000 l d .bss 00000000 .bss 00000000 g .text 00000000 fred
در اینجا عدد نخست مقدار نماد است (که گاهی آدرس آن نامیده میشود). فیلد بعدی در واقع مجموعهای از نویسهها و فاصلهها است که بیتهای پرچم تنظیمشده روی نماد را نشان میدهند. این نویسهها در زیر شرح داده شدهاند. فیلد بعدی بخشی است که نماد با آن مرتبط است، یا *ABS* در صورتی که بخش مطلق باشد (یعنی به هیچ بخشی متصل نباشد)، یا *UND* در صورتی که در فایل به بخش ارجاع داده شده اما در آن تعریف نشده باشد.
پس از نام بخش، فیلد دیگری قرار دارد؛ این فیلد عددی است که برای نمادهای مشترک (common) مقدار تراز (alignment) و برای سایر نمادها اندازه است. در پایان، نام نماد نمایش داده میشود.
نویسههای پرچم به ۷ گروه به شرح زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (یک فاصله) یا هم سراسری و هم محلی (!) است. یک نماد میتواند به دلایل گوناگونی نه محلی باشد و نه سراسری؛ برای نمونه، به دلیل این که برای اشکالزدایی استفاده میشود، اما اگر همزمان هم محلی و هم سراسری باشد احتمالاً نشاندهندهٔ یک باگ است. نمادهای سراسری یکتا یک افزونهٔ گنو (GNU extension) برای مجموعهپیوندهای نماد استاندارد ELF هستند. برای چنین نمادی، پیونددهندهٔ پویا (dynamic linker) اطمینان حاصل میکند که در سرتاسر فرایند تنها یک نماد با این نام و نوع مورد استفاده قرار گیرد.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهندهٔ یک سازنده (constructor با C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد معمولی (یک فاصله) است. نام نماد هشدار، پیامی است که در صورت ارجاع به نماد پس از نماد هشدار، نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، تابعی که باید در حین پردازش بازنشانی (reloc) ارزیابی شود (i)، یا یک نماد معمولی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D) یا یک نماد معمولی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا صرفاً یک نماد معمولی (یک فاصله) است.
- -T
- --dynamic-syms
- ورودیهای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی (shared
libraries)،
معنادار
است. این
اطلاعات
شبیه به
اطلاعات
ارائهشده
توسط
برنامهٔ nm
هنگام
استفاده از
گزینهٔ -D
(--dynamic) است.
قالب خروجی مشابه موارد تولیدشده توسط گزینهٔ --syms است، با این تفاوت که یک فیلد اضافی پیش از نام نماد درج میشود که اطلاعات نسخهٔ مرتبط با نماد را ارائه میدهد. اگر نسخهٔ نماد، نسخهٔ پیشفرضی باشد که هنگام برطرف کردن ارجاعات بدون نسخه به نماد استفاده میشود، به همان صورت نمایش داده میشود؛ در غیر این صورت درون پرانتز قرار میگیرد.
- --special-syms
- هنگام نمایش نمادها، مواردی را نیز شامل میشود که از نظر معماری مقصد به نوعی خاص تلقی میشوند و بهطور معمول مورد توجه کاربر نیستند.
- -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
- تمام اطلاعات سرآیند (header) موجود، شامل جدول نمادها و ورودیهای بازنشانی (relocation) را نمایش میدهد. استفاده از -x معادل مشخص کردن تمامی گزینههای -a -f -h -p -r -t است.
- -w
- --wide
- برخی سطرها را برای دستگاههای خروجی با بیش از ۸۰ ستون قالببندی میکند. همچنین نام نمادها را هنگام نمایش کوتاه نمیکند (برش نمیزند).
- -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)، نسخهٔ ۱.۳ یا هر نسخهٔ بعدی منتشر شده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation)؛ بدون بخشهای تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد اعطا میشود. نسخهای از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-01-23 | binutils-2.45.1 |