OBJDUMP(1) أدوات تطوير جنو OBJDUMP(1)

الاسم

objdump - يعرض معلومات من ملفات الكائنات

موجز

objdump [-a|--archive-headers]
[-b اسم_bfd|--target=اسم_bfd]
[-C|--demangle[=نمط] ]
[-d|--disassemble[=رمز]]
[-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=قسم]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=نص]]
[-m آلة|--architecture=آلة]
[-M خيارات|--disassembler-options=خيارات]
[-p|--private-headers]
[-P خيارات|--private=خيارات]
[-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=قسم]
[--sframe=قسم]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=عنوان]
[--stop-address=عنوان]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=إزاحة]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=قسم]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=بادئة]
[--prefix-strip=مستوى]
[--insn-width=عرض]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U طريقة] [--unicode=طريقة]
[-V|--version]
[-H|--help]
ملف_كائن...

الوصف

يعرض objdump معلومات حول ملف كائن واحد أو أكثر. تتحكم الخيارات في المعلومات المحددة المراد عرضها. هذه المعلومات مفيدة في الغالب للمبرمجين الذين يعملون على أدوات التجميع، على عكس المبرمجين الذين يريدون فقط لبرنامجهم أن يُجمع ويعمل.

ملف_كائن... هي ملفات الكائنات المراد فحصها. عند تحديد الأرشيفات، يعرض objdump معلومات عن كل ملف من ملفات الكائنات الأعضاء.

الخيارات

الأشكال الطويلة والقصيرة للخيارات، الموضحة هنا كبدائل، متكافئة. يجب تقديم خيار واحد على الأقل من القائمة -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x.

إذا كان أي من ملفات ملف_كائن عبارة عن أرشيفات، فستُعرض معلومات ترويسة الأرشيف (بتنسيق مشابه لـ ls -l). بالإضافة إلى المعلومات التي يمكنك سردها باستخدام ar tv، يعرض objdump -a تنسيق ملف الكائن لكل عضو في الأرشيف.
عند تفريغ المعلومات، أضف أولاً إزاحة إلى جميع عناوين الأقسام. هذا مفيد إذا كانت عناوين الأقسام لا تتوافق مع جدول الرموز، وهو ما يمكن أن يحدث عند وضع الأقسام في عناوين معينة عند استخدام تنسيق لا يمكنه تمثيل عناوين الأقسام، مثل a.out.
حدد أن تنسيق رمز الكائن لملفات الكائنات هو اسم_bfd. قد لا يكون هذا الخيار ضرورياً؛ يمكن لـ objdump التعرف آليًا على العديد من التنسيقات.

على سبيل المثال،

objdump -b oasys -m vax -h fu.o

يعرض ملخص المعلومات من ترويسات الأقسام (-h) للملف fu.o، والذي عُرّف صراحة (-m) كملف كائن VAX بالتنسيق الذي تنتجه مجمّعات Oasys. يمكنك سرد التنسيقات المتاحة باستخدام الخيار -i.

فك ترميز (demangle) أسماء الرموز منخفضة المستوى إلى أسماء بمستوى المستخدم. بالإضافة إلى إزالة أي شرطة سفلية بادئة يضعها النظام، فإن هذا يجعل أسماء دوال C++‎ مقروءة. المجمّعات المختلفة لها أنماط ترميز مختلفة. يمكن استخدام وسيط نمط فك الترميز الاختياري لاختيار نمط فك ترميز مناسب لمجمّعك.
يمكّن أو يعطل حداً لمقدار التكرار المنفذ أثناء فك تشويه السلاسل النصية. بما أن تنسيقات تشويه الأسماء تسمح بمستوى غير محدود من التكرار، فمن الممكن إنشاء سلاسل سيؤدي فك تشفيرها إلى استنفاد مساحة المكدس المتاحة على الحاسوب المضيف، مما يتسبب في خطأ في الذاكرة. يحاول هذا الحد منع حدوث ذلك عن طريق تقييد التكرار بـ 2048 مستوى من التداخل.

المبدئي هو تفعيل هذا الحد، لكن تعطيله قد يكون ضرورياً من أجل حل (demangle) الأسماء المعقدة حقاً. لاحظ مع ذلك أنه إذا عُطل حد العودية، فإن استنفاد المكدس وارد وأي تقارير عن أخطاء بشأن مثل هذا الحدث ستُرفض.

يعرض معلومات التنقِيح. يحاول هذا تحليل معلومات تنسيق تنقيح STABS المخزنة في الملف وطباعتها باستخدام صيغة تشبه لغة C. إذا لم يُعثر على تنقيح STABS، فإن هذا الخيار يرتد إلى الخيار -W لطباعة أي معلومات DWARF في الملف.
مثل -g، ولكن المعلومات تُنشأ بتنسيق متوافق مع أداة ctags.
يعرض تذكيرات المجمّع لتعليمات الآلة من ملف الإدخال. يفك هذا الخيار تشفير تلك الأقسام المتوقع احتواؤها على تعليمات فقط. إذا أُعطي وسيط رمز الاختياري (ربما لمرات متعددة)، فستُعرض تذكيرات المجمّع بدءاً من (كل) رمز. إذا كان رمز اسم دالة، فسيتوقف فك التجميع عند نهاية الدالة، وإلا فسيتوقف عند مواجهة الرمز التالي. إذا لم تكن هناك تطابقات لأي رمز فلن يُعرض أي شيء.

لاحظ أنه إذا مُكّن الخيار --dwarf=follow-links، فستُقرأ أي جداول رموز في ملفات معلومات التنقيح المرتبطة وتُستخدم عند فك التجميع.

مثل -d، ولكن يفك تجميع محتويات جميع الأقسام غير الفارغة وغير bss، وليس فقط تلك المتوقع احتواؤها على تعليمات. يمكن استخدام -j لتحديد أقسام معينة.

هذا الخيار له أيضاً تأثير طفيف على فك تجميع التعليمات في أقسام البرمجة. عندما يكون الخيار -d سارياً، سيفترض objdump أن أي رموز موجودة في قسم برمجة تقع على الحدود بين التعليمات وسيرفض فك التجميع عبر هذه الحدود. ومع ذلك، عندما يكون الخيار -D سارياً، يُكبت هذا الافتراض. هذا يعني أنه من الممكن لمخرجات -d و -D أن تختلف إذا كانت البيانات مخزنة في أقسام البرمجة، على سبيل المثال.

إذا كان الهدف هو بنية ARM، فإن هذا المفتاح له أيضاً تأثير إجبار مفكك التجميع على فك ترميز قطع البيانات الموجودة في أقسام البرمجة كما لو كانت تعليمات.

لاحظ أنه إذا مُكّن الخيار --dwarf=follow-links، فستُقرأ أي جداول رموز في ملفات معلومات التنقيح المرتبطة وتُستخدم عند فك التجميع.

عند فك التجميع، لا تطبع العناوين في كل سطر أو للرموز وإزاحات إعادة التوطين. بالاقتران مع --no-show-raw-insn، قد يكون هذا مفيداً لمقارنة مخرجات المجمّع.
عند فك التجميع، اطبع العنوان الكامل في كل سطر. هذا هو تنسيق فك التجميع الأقدم.
حدد ترتيب البايتات (endianness) لملفات الكائنات. يؤثر هذا فقط على فك التجميع. يمكن أن يكون هذا مفيداً عند فك تجميع تنسيق ملف لا يصف معلومات ترتيب البايتات، مثل S-records.
يعرض معلومات ملخصة من الترويسة العامة لكل ملف من ملفات ملف_كائن.
عند فك تجميع الأقسام، وحينما يُعرض رمز ما، يُعرض أيضاً إزاحة الملف لمنطقة البيانات التي هي على وشك التفريغ. إذا تم تخطي الأصفار، فعند استئناف فك التجميع، أخبر المستخدم بعدد الأصفار التي تم تخطيها وإزاحة الملف للموقع الذي استؤنف منه فك التجميع. عند تفريغ الأقسام، اعرض إزاحة الملف للموقع الذي يبدأ منه التفريغ.
حدد أنه عند عرض التعليمات البرمجية المصدر/فك التجميع المتداخلة (يفترض -S) من ملف لم يتم عرضه بعد، وسّع السياق إلى بداية الملف.
اعرض ملخص معلومات من ترويسات الأقسام لملف الكائن.

قد تُنقل قطع الملف إلى عناوين غير قياسية، على سبيل المثال عبر استخدام الخيارات -Ttext أو -Tdata أو -Tbss للمحرر ld. وبالرغم من ذلك، فإن بعض تنسيقات ملفات الكائنات، مثل a.out، لا تُخزن عنوان البداية لقطع الملف. في هذه الحالات، ومع أن ld ينقل الأقسام بشكل صحيح، فإن استخدام objdump -h لسرد ترويسات أقسام الملف لا يمكنه إظهار العناوين الصحيحة. بدلًا من ذلك، فإنه يظهر العناوين المعتادة، وهي ضمنية للملف الموجه.

لاحظ أنه في بعض الحالات يمكن لقسم ما أن يمتلك سمتي READONLY و NOREAD معًا. في هذه الحالات، تكون الأولوية لسمة NOREAD، لكن objdump سيبغ عنهما كليهما لأن الضبط الدقيق لبتات العلامات قد يكون مهمًا.

اطبع ملخصًا لخيارات objdump ثم اخرج.
اعرض قائمة تظهر كل البنيات وتنسيقات الكائنات المتاحة لتحديدها عبر -b أو -m.
اعرض معلومات للقسم الاسم. يمكن تحديد هذا الخيار عدة مرات.
اعرض محتويات الأقسام غير المتعلقة بالتنقيح الموجودة في ملفات معلومات تنقيح منفصلة والمرتبطة بالملف الرئيس. يقتضي هذا الخيار آليًا الخيار -WK، وستُعرض فقط الأقسام المطلوبة عبر خيارات سطر الأوامر الأخرى.
وسم العرض (باستخدام معلومات التنقيح) باسم الملف وأرقام أسطر المصدر المقابلة لكود الكائن أو عمليات النقل المعروضة. مفيد فقط مع -d أو -D أو -r.
حدد البنية المراد استخدامها عند فك تجميع ملفات الكائنات. يمكن أن يكون هذا مفيدًا عند فك تجميع ملفات كائنات لا تصف معلومات البنية، مثل S-records. يمكنك سرد البنيات المتاحة باستخدام الخيار -i.

لمعظم البنيات، يمكن تقديم اسم البنية واسم الآلة، مفصولين بنقطتين. على سبيل المثال، foo:bar تشير إلى نوع الآلة bar في البنية foo. يمكن أن يكون هذا مفيدًا إذا ضُبط objdump ليدعم بنيات متعددة.

إذا كان الهدف بنية ARM، فإن هذا المفتاح له تأثير إضافي؛ إذ يقيد فك التجميع على تلك التعليمات التي تدعمها البنية المحددة في الآلة فقط. إذا كان من الضروري استخدام هذا المفتاح لأن ملف الدخل لا يحتوي على أي معلومات عن البنية، ولكن يُرغب أيضًا في فك تجميع كل التعليمات، فاستخدم -marm.

مرر معلومات خاصة بالهدف إلى فك التجميع. مدعوم فقط في بعض الأهداف. إذا كان من الضروري تحديد أكثر من خيار لفك التجميع، فيمكن استخدام خيارات -M متعددة أو وضعها معًا في قائمة مفصولة بفاصلة.

بالنسبة لـ ARC، يتحكم dsp في طباعة تعليمات DSP، و spfp يختار طباعة تعليمات FPX أحادية الدقة، و dpfp يختار طباعة تعليمات FPX مزدوجة الدقة، و quarkse_em يختار طباعة تعليمات QuarkSE-EM الخاصة، و fpuda يختار طباعة تعليمات المساعدة مزدوجة الدقة، و fpus يختار طباعة تعليمات FPU أحادية الدقة، بينما يختار fpud طباعة تعليمات FPU مزدوجة الدقة. بالإضافة إلى ذلك، يمكن للمرء اختيار طباعة جميع القيم المباشرة (immediates) بالتمثيل الست عشري باستخدام hex. مبدئيًا، تُطبع القيم المباشرة القصيرة باستخدام التمثيل العشري، بينما تُطبع القيم المباشرة الطويلة بالتمثيل الست عشري.

تسمح cpu=... للمرء بفرض بنية تعليمات (ISA) معينة عند فك تجميع التعليمات، متجاوزة قيمة -m أو أيًا كان ما يوجد في ملف ELF. قد يكون هذا مفيدًا لاختيار ARC EM أو HS ISA، لأن البنية متماثلة لهما ويعتمد فك التجميع على بيانات ترويسة ELF الخاصة لتقرير ما إذا كان الكود مخصصًا لـ EM أو HS. قد يُحدد هذا الخيار عدة مرات - ستُستخدم القيمة الأخيرة فقط. القيم الصالحة هي نفسها لخيار المجمع -mcpu=....

إذا كان الهدف بنية ARM، فيمكن استخدام هذا المفتاح لاختيار مجموعة أسماء المسجلات المستخدمة أثناء فك التجميع. تحديد -M reg-names-std (المبدئي) سيختار أسماء المسجلات كما هي مستخدمة في وثائق مجموعة تعليمات ARM، ولكن مع تسمية المسجل 13 باسم 'sp'، والمسجل 14 باسم 'lr' والمسجل 15 باسم 'pc'. تحديد -M reg-names-apcs سيختار مجموعة الأسماء المستخدمة في معيار استدعاء الإجراءات لـ ARM، بينما سيستخدم تحديد -M reg-names-raw الحرف r متبوعًا برقم المسجل.

هناك أيضًا متغيران في مخطط تسمية مسجلات APCS يتم تفعيلهما عبر -M reg-names-atpcs و -M reg-names-special-atpcs واللذان يستخدمان اصطلاحات تسمية معيار استدعاء الإجراءات لـ ARM/Thumb. (إما بأسماء المسجلات العادية أو أسماء المسجلات الخاصة).

يمكن استخدام هذا الخيار أيضًا لبنيات ARM لإجبار فك التجميع على تفسير كل التعليمات كتعليمات Thumb عبر استخدام المفتاح --disassembler-options=force-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"
اختر بين وضع تذكير (mnemonic) intel ووضع تذكير AT&T. ملاحظة: "intel-mnemonic" تقتضي "intel" و "att-mnemonic" تقتضي "att".
"addr64"
"addr32"
"addr16"
"data32"
"data16"
حدد حجم العنوان المبدئي وحجم المعامل. سيتم تجاوز هذه الخيارات الخمسة إذا ظهرت "x86-64" أو "i386" أو "i8086" لاحقًا في سلسلة الخيارات.
"suffix"
عندما يكون في وضع AT&T وأيضًا لمجموعة محدودة من التعليمات عندما يكون في وضع Intel، يوجه فك التجميع لطباعة لاحقة تذكير حتى عندما يمكن استنتاج اللاحقة من المعاملات أو، لتعليمات معينة، من القيم المبدئية لوضع التنفيذ.

بالنسبة لـ PowerPC، معامل -M المعنون raw يختار فك تجميع تعليمات العتاد بدلًا من الأسماء المستعارة. على سبيل المثال، سترى "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 بتعديل الاختيار المبدئي أو اختيار سابق لوحدة المعالجة، عبر تعطيل وتمكين تعليمات 64 بت على التوالي. بالإضافة إلى ذلك، تضيف altivec و any و lsp و htm و vsx و spe و spe2 قدرات لاختيار وحدة معالجة سابق أو لاحق. سيقوم any بفك تجميع أي كود عملية (opcode) معروف لـ binutils، ولكن في الحالات التي يكون فيها لكود العملية معنيان مختلفان أو معاملات مختلفة، قد لا ترى فك التجميع الذي تتوقعه. إذا قمت بفك التجميع دون إعطاء اختيار لوحدة المعالجة، فسيتم اختيار قيمة مبدئية من المعلومات التي يجمعها BFD من ترويسات ملفات الكائنات، ولكن النتيجة مجددًا قد لا تكون كما تتوقع.

بالنسبة لـ RISC-V، الخيارات التالية مدعومة:

"max"
فك التجميع دون التحقق من سلسلة البنية. هذا وضع "أقصى جهد"، لذا في حالة تداخل ملحقات 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 وفقًا لإصدار مواصفات الامتياز المختار (مثال: 1.10 و 1.11 و 1.12 و 1.13).

بالنسبة لـ MIPS، يتحكم هذا الخيار في طباعة أسماء تذكير التعليمات وأسماء المسجلات في التعليمات المفككة. يمكن تحديد اختيارات متعددة مما يلي في سلسلة نصية مفصولة بفاصلة، وتُتجاهل الخيارات غير الصالحة:

"no-aliases"
اطبع تذكير التعليمة 'raw' (الخام) بدلًا من تذكير تعليمة وهمية (pseudo). أي، اطبع '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 (المعالج المساعد للتحكم بالنظام؛ المعالج المساعد 0) كما هو مناسب لوحدة المعالجة المركزية أو البنية المحددة بـ 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، مما سيؤدي على الأرجح إلى تفكيك بقية الدالة بشكل خاطئ.

يطبع معلومات خاصة بتنسيق ملف الكائن. تعتمد المعلومات الدقيقة المطبوعة على تنسيق ملف الكائن. بالنسبة لبعض تنسيقات ملفات الكائنات، لا تُطبع أي معلومات إضافية.
يطبع معلومات خاصة بتنسيق ملف الكائن. المعامل options عبارة عن قائمة مفصولة بفاصلة تعتمد على التنسيق (تُعرض قوائم الخيارات مع المساعدة).

بالنسبة لـ XCOFF، الخيارات المتاحة هي:

"header"
"aout"
"sections"
"syms"
"relocs"
"lineno,"
"loader"
"except"
"typchk"
"traceback"
"toc"
"ldinfo"

بالنسبة لـ PE، الخيارات المتاحة هي:

"header"
"sections"

لا تدعم جميع تنسيقات الكائنات هذا الخيار. وعلى وجه الخصوص، لا يستخدمه تنسيق ELF.

يطبع مدخلات إعادة التوطين (relocation) للملف. إذا استُخدم مع -d أو -D، تُطبع عمليات إعادة التوطين متخللة مع التفكيك.
يطبع مدخلات إعادة التوطين الديناميكية للملف. هذا مفيد فقط للكائنات الديناميكية، مثل أنواع معينة من المكتبات المشتركة. كما هو الحال مع -r، إذا استُخدم مع -d أو -D، تُطبع عمليات إعادة التوطين متخللة مع التفكيك.

ملاحظة: objdump لا يدعم عرض عمليات إعادة التوطين من نوع RELR. يمكن عرض هذه العمليات بواسطة برنامج readelf.

يعرض المحتويات الكاملة للأقسام، وغالباً ما يُستخدم بالاشتراك مع -j لطلب أقسام محددة. مبدئياً، تُعرض جميع الأقسام غير الفارغة وغير التابعة لـ bss. مبدئياً، سيُعرض أي قسم مضغوط في شكله المضغوط. لرؤية المحتويات في شكل غير مضغوط، أضف خيار -Z إلى سطر الأوامر.
يعرض الكود المصدري متداخلاً مع التفكيك، إن أمكن. يتضمن الخيار -d.
عند التفكيك، يعرض جميع الرموز التي تطابق عنواناً معيناً، وليس الرمز الأول فقط.
مثل خيار -S، ولكن تُعرض جميع أسطر الكود المصدري مع بادئة txt. عادةً ما يكون txt عبارة عن سلسلة تعليق يمكن استخدامها لتمييز كود المجمع عن الكود المصدري. إذا لم يتم توفير txt، فسيتم استخدام سلسلة مبدئية هي "# " (علامة المربع متبوعة بمسافة).
حدد بادئة prefix لإضافتها إلى المسارات المطلقة عند استخدامها مع -S.
يشير إلى عدد أسماء المجلدات الأولية التي سيتم تجريدها من المسارات المطلقة المضمنة. ليس له أي تأثير بدون --prefix=prefix.
عند تفكيك التعليمات، يطبع التعليمة بالنظام الست عشري وكذلك في شكل رمزي. هذا هو السلوك المبدئي إلا عند استخدام --prefix-addresses.
عند تفكيك التعليمات، لا يطبع بايتات التعليمات. هذا هو السلوك المبدئي عند استخدام --prefix-addresses.
يعرض عدد width من البايتات على سطر واحد عند تفكيك التعليمات.
يصور القفزات التي تظل داخل الدالة عن طريق رسم فن ASCII بين عناوين البداية والهدف. يضيف معامل =color الاختياري لوناً إلى المخرجات باستخدام ألوان الطرفية البسيطة. بدلاً من ذلك، سيضيف معامل =extended-color لوناً باستخدام ألوان 8 بت، ولكن قد لا تعمل هذه الألوان على جميع الطرفيات.

إذا كان من الضروري تعطيل خيار visualize-jumps بعد تمكينه مسبقاً، فاستخدم visualize-jumps=off.

يمكّن أو يعطل استخدام تمييز بناء الجملة الملون في مخرجات التفكيك. يتم تحديد السلوك المبدئي عبر خيار وقت الضبط. لاحظ أنه لا تدعم جميع البنيات تمييز بناء الجملة الملون، واعتماداً على الطرفية المستخدمة، قد لا تكون المخرجات الملونة مقروءة بالفعل.

يضيف معامل on الألوان باستخدام ألوان الطرفية البسيطة.

يقوم معامل terminal بنفس الشيء، ولكن فقط إذا كان جهاز الإخراج طرفية.

معامل extended-color مشابه لمعامل on، ولكنه يستخدم ألوان 8 بت. قد لا تعمل هذه الألوان على جميع الطرفيات.

يعطل معامل off التفكيك الملون.

يعرض محتويات أقسام تنقيح 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. إذا لم تُستخدم هذه الخيارات فإن المبدئي هو تمكين تتبع روابط التنقيح.

ملاحظة - إذا كان دعم بروتوكول 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 بتنسيق خام.
"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 غير مدعوم حاليًا.

يقيد تفريغ قسم ".debug_info" إلى n من الأبناء. هذا مفيد فقط مع --debug-dump=info. المبدئي هو طباعة كل DIEs؛ القيمة الخاصة 0 لـ n سيكون لها نفس التأثير.

باستخدام قيمة غير صفرية لـ n، لن تُطبع مدخلات DIE عند المستوى n أو أعمق منه. النطاق لـ n يبدأ من الصفر.

اطبع فقط DIEs التي تبدأ بالـ DIE المرقمة n. هذا مفيد فقط مع --debug-dump=info.

إذا جرى تحديده، فسيقوم هذا الخيار بمنع طباعة أي معلومات رأس وجميع DIEs قبل DIE المرقم بـ n. سيتم طباعة الأشقاء والأطفال لـ DIE المحدد فقط.

يمكن استخدام هذا بالاقتران مع --dwarf-depth.

تفعيل فحوصات إضافية لاتساق معلومات Dwarf.
اعرض محتويات قسم CTF المحدد. تحتوي أقسام CTF نفسها على العديد من الأقسام الفرعية، والتي تُعرض جميعاً بالترتيب.

مبدئيًا، اعرض اسم القسم المسمى .ctf، وهو الاسم الصادر عن ld.

إذا احتوى قسم CTF على أنواع معرفة بشكل غامض، فسيتكون من أرشيف للعديد من قواميس CTF، ترث جميعها من قاموس واحد يحتوي على أنواع غير غامضة. يسمى هذا العضو مبدئيًا .ctf، مثل القسم الذي يحتويه، ولكن من الممكن تغيير هذا الاسم باستخدام دالة "ctf_link_set_memb_name_changer" في وقت الربط. عند النظر إلى أرشيفات CTF التي أُنشئت بواسطة رابط يستخدم مغير الأسماء لإعادة تسمية عضو الأرشيف الأصل، يمكن استخدام --ctf-parent لتحديد الاسم المستخدم للأصل.
يتيح لك هذا الخيار اختيار قسم مختلف تمامًا لقاموس CTF الأب الذي يحتوي على أنواع غير غامضة عن القواميس الأبناء التي تحتوي على البقية الغامضة. لا يُصدر الموصل كائنات ELF مهيكلة بهذا الشكل، ولكن قد تفعل بعض الموصلات التابعة لجهات خارجية ذلك. ومن المناسب أيضًا فحص ملفات CTF المكتوبة كملفات خام متعددة لتأليفها باستخدام objcopy، والذي يمكنه وضعها في أقسام ELF مختلفة ولكن ليس في أعضاء مختلفة من قاموس CTF واحد.
اعرض محتويات قسم SFrame المحدد.

مبدئيًا، اعرض اسم القسم المسمى .sframe، وهو الاسم الصادر عن ld.

يعرض المحتويات الكاملة لأي أقسام مطلوبة. يعرض محتويات الأقسام .stab و .stab.index و .stab.excl من ملف ELF. هذا مفيد فقط في الأنظمة (مثل Solaris 2.0) التي تُحمل فيها مدخلات جدول رموز التنقيح ".stab" في قسم ELF. في معظم تنسيقات الملفات الأخرى، تتداخل مدخلات جدول رموز التنقيح مع رموز الربط، وتكون مرئية في مخرجات --syms.
يبدأ عرض البيانات عند العنوان المحدد. يؤثر هذا على مخرجات الخيارات -d و -r و -s.
يوقف عرض البيانات عند العنوان المحدد. يؤثر هذا على مخرجات الخيارات -d و -r و -s.
يطبع مدخلات جدول الرموز للملف. هذه المعلومات مشابهة لتلك التي يوفرها برنامج 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 هو رقم القسم، وقيمة fl هي بتات علامات الرمز، ورقم ty هو نوع الرمز، ورقم scl هو فئة تخزين الرمز وقيمة nx هي عدد المدخلات المساعدة المرتبطة بالرمز. الحقلان الأخيران هما قيمة الرمز واسمه.

تنسيق المخرجات الشائع الآخر، والذي يظهر عادةً مع الملفات المستندة إلى ELF، يبدو هكذا:

00000000 l    d  .bss   00000000 .bss
00000000 g       .text  00000000 fred

هنا الرقم الأول هو قيمة الرمز (يُشار إليها أحيانًا بعنوانه). الحقل التالي هو في الواقع مجموعة من المحارف والمسافات التي تشير إلى بتات العلامات المضبطة على الرمز. توصف هذه المحارف أدناه. التالي هو القسم المرتبط به الرمز أو *ABS* إذا كان القسم مطلقًا (أي غير متصل بأي قسم)، أو *UND* إذا كان القسم مشارًا إليه في الملف الذي يُفرغ، ولكنه غير معرف هناك.

بعد اسم القسم يأتي حقل آخر، وهو رقم، يمثل المحاذاة للرموز العامة والحجم للرموز الأخرى. وأخيرًا يُعرض اسم الرمز.

تنقسم محارف العلامات إلى 7 مجموعات كما يلي:

"l"
"g"
"u"
"!"
الرمز محلي (l)، أو عالمي (g)، أو عالمي فريد (u)، أو ليس عالميًا ولا محليًا (مسافة فارغة) أو كلاهما عالمي ومحلي (!). يمكن للرمز ألا يكون محليًا ولا عالميًا لأسباب متنوعة، على سبيل المثال، لأنه يُستخدم للتنقيح، ولكن من المحتمل أن يكون مؤشرًا على علة إذا كان محليًا وعالميًا في نفس الوقت. الرموز العالمية الفريدة هي امتداد GNU لمجموعة قياسية من روابط رموز ELF. بالنسبة لمثل هذا الرمز، سيتأكد الموصل الديناميكي من وجود رمز واحد فقط بهذا الاسم والنوع قيد الاستخدام في العملية بأكملها.
"w"
الرمز ضعيف (w) أو قوي (مسافة فارغة).
"C"
يشير الرمز إلى منشئ (C) أو رمز عادي (مسافة فارغة).
"W"
الرمز هو تحذير (W) أو رمز عادي (مسافة فارغة). اسم رمز التحذير هو رسالة تُعرض إذا تم الرجوع إلى الرمز الذي يلي رمز التحذير.
"I"
"i"
الرمز مرجع غير مباشر لرمز آخر (I)، أو دالة يجب تقييمها أثناء معالجة النقل (i) أو رمز عادي (مسافة فارغة).
"d"
"D"
الرمز هو رمز تنقيح (d) أو رمز ديناميكي (D) أو رمز عادي (مسافة فارغة).
"F"
"f"
"O"
الرمز هو اسم لدالة (F) أو ملف (f) أو كائن (O) أو مجرد رمز عادي (مسافة فارغة).
يطبع مدخلات جدول الرموز الديناميكية للملف. هذا يكون ذا معنى فقط للكائنات الديناميكية، مثل أنواع معينة من المكتبات المشتركة. هذا مشابه للمعلومات التي يوفرها برنامج nm عند إعطائه الخيار -D (--dynamic).

تنسيق المخرجات مشابه لذلك الذي ينتجه الخيار --syms، باستثناء إدراج حقل إضافي قبل اسم الرمز، يعطي معلومات الإصدار المرتبطة بالرمز. إذا كان الإصدار هو الإصدار المبدئي الذي سيُستخدم عند حل المراجع غير المؤرخة للرمز فسيُعرض كما هو، وإلا فسيُوضع بين قوسين.

عند عرض الرموز، يتم تضمين تلك التي يعتبرها الهدف خاصة بطريقة ما والتي لن تكون عادةً محل اهتمام المستخدم.
يتحكم في عرض محارف UTF-8 متعددة البايتات في السلاسل النصية. المبدئي (--unicode=default) هو عدم معاملتها معاملة خاصة. يعرض الخيار --unicode=locale التسلسل في المحلية الحالية، والتي قد تدعمها أو لا. تعرض الخيارات --unicode=hex و --unicode=invalid هذه المحارف كتسلسلات بايتات ست عشرية محاطة بأقواس زاوية أو متعرجة.

يعرضهم الخيار --unicode=escape كتسلسلات هروب (\uxxxx) ويعرضهم الخيار --unicode=highlight كتسلسلات هروب مبرزة باللون الأحمر (إذا كان جهاز المخرجات يدعم ذلك). يهدف التلوين إلى لفت الانتباه إلى وجود تسلسلات يونيكود حيث قد لا تكون متوقعة.

يطبع رقم إصدار objdump ويخرج.
يعرض جميع معلومات الترويسة المتاحة، بما في ذلك جدول الرموز ومدخلات النقل. استخدام -x يعادل تحديد كل من -a -f -h -p -r -t.
ينسق بعض الأسطر لأجهزة المخرجات التي تحتوي على أكثر من 80 عمودًا. كما لا يقتطع أسماء الرموز عند عرضها.
عادةً ما يتخطى مخرج فك التجميع كتل الأصفار. يوجه هذا الخيار فك التجميع لفك تجميع تلك الكتل، تمامًا مثل أي بيانات أخرى.
الخيار -Z مخصص للاستخدام بالاقتران مع الخيار -s. فهو يوجه objdump لفك ضغط أي أقسام مضغوطة قبل عرض محتوياتها.
@الملف
يقرأ خيارات سطر الأوامر من الملف. تُدرج الخيارات المقروءة مكان خيار @الملف الأصلي. إذا كان الملف غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال.

تُفصل الخيارات في الملف بمسافات فارغة. يمكن تضمين حرف مسافة فارغة في خيار ما عن طريق إحاطة الخيار بالكامل إما بعلامات اقتباس مفردة أو مزدوجة. يمكن تضمين أي حرف (بما في ذلك الشرطة المائلة العكسية) عن طريق سبق الحرف المراد تضمينه بشرطة مائلة عكسية. يمكن لـ الملف نفسه أن يحتوي على خيارات @الملف إضافية؛ وتُعالج أي خيارات من هذا القبيل بشكل متكرر.

انظر أيضًا

nm(1)، و readelf(1)، ومدخلات Info الخاصة بـ binutils.

حقوق النسخ

حقوق الطبع والنشر (c) لعام 1991-2026 لمؤسسة البرمجيات الحرة، المحدودة.

يُمنح الإذن بنسخ وتوزيع و/أو تعديل هذا المستند بموجب شروط رخصة جنو للوثائق الحرة (GNU Free Documentation License)، الإصدار 1.3 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ مع عدم وجود أقسام ثابتة، وبدون نصوص غلاف أمامي، وبدون نصوص غلاف خلفي. نُسخة من الرخصة مضمنة في القسم المعنون "GNU Free Documentation License".

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

9 فبراير 2026 binutils-2.46