Scroll to navigation

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

الاسم

readelf - يعرض معلومات عن ملفات ELF

موجز

readelf [-a|--all]
[-h|--file-header]
[-l|--program-headers|--segments]
[-S|--section-headers|--sections]
[-g|--section-groups]
[-t|--section-details]
[-e|--headers]
[-s|--syms|--symbols]
[--dyn-syms|--lto-syms]
[--sym-base=[0|8|10|16]]
[--demangle=نمط|--no-demangle]
[--quiet]
[--recurse-limit|--no-recurse-limit]
[-U طريقة|--unicode=طريقة]
[-X|--extra-sym-info|--no-extra-sym-info]
[-n|--notes]
[-r|--relocs]
[-u|--unwind]
[-d|--dynamic]
[-V|--version-info]
[-A|--arch-specific]
[-D|--use-dynamic]
[-L|--lint|--enable-checks]
[-x <رقم أو اسم>|--hex-dump=<رقم أو اسم>]
[-p <رقم أو اسم>|--string-dump=<رقم أو اسم>]
[-R <رقم أو اسم>|--relocated-dump=<رقم أو اسم>]
[-j <رقم أو اسم>|--display-section=<رقم أو اسم>]
[-z|--decompress]
[-c|--archive-index]
[-w[lLiaprmfFsoORtUuTgAck]|
--debug-dump[=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|--debug-dump=follow-links]
[-wN|--debug-dump=no-follow-links]
[-wD|--debug-dump=use-debuginfod]
[-wE|--debug-dump=do-not-use-debuginfod]
[-P|--process-links]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf=قسم]
[--ctf-parent=قسم]
[--ctf-symbols=قسم]
[--ctf-strings=قسم]
[--sframe=قسم]
[-I|--histogram]
[--got-contents]
[-v|--version]
[-W|--wide]
[-T|--silent-truncation]
[-H|--help]
ملف_elf...

الوصف

يعرض readelf معلومات عن ملف كائن أو أكثر بتنسيق ELF. وتتحكم الخيارات في المعلومات المحددة المراد عرضها.

ملف_elf... هي ملفات الكائنات المراد فحصها. ملفات ELF بنظام 32 بت و64 بت مدعومة، وكذلك الأرشيفات التي تحتوي على ملفات ELF.

يؤدي هذا البرنامج وظيفة مشابهة لـ objdump ولكنه يخوض في تفاصيل أكثر ويوجد بشكل مستقل عن مكتبة BFD، لذا إذا كان هناك علة في BFD فلن يتأثر readelf.

الخيارات

الأشكال الطويلة والقصيرة للخيارات، الموضحة هنا كبدائل، متكافئة. يجب تقديم خيار واحد على الأقل بجانب -v أو -H.

يكافئ تحديد --file-header، و--program-headers، و--sections، و--symbols، و--relocs، و--dynamic، و--notes، و--got-contents، و--version-info، و--arch-specific، و--unwind، و--section-groups و--histogram.

ملاحظة - هذا الخيار لا يفعل --use-dynamic بحد ذاته، لذا إذا لم يكن هذا الخيار موجودًا في سطر الأوامر فلن تُعرض الرموز الديناميكية وعمليات النقل (relocs) الديناميكية.

يعرض المعلومات الموجودة في ترويسة ELF في بداية الملف.
يُعرض المعلومات الواردة في ترويسات مقاطع الملف، إن وجدت.
يكتم تشخيص "لا توجد رموز".
يُعرض المعلومات الواردة في ترويسات أقسام الملف، إن وجدت.
يُعرض المعلومات الواردة في مجموعات أقسام الملف، إن وجدت.
يعرض معلومات القسم التفصيلية. يتضمن الخيار -S.
يعرض المدخلات في قسم جدول الرموز في الملف، إن وجد. إذا كان للرمز معلومات إصدار مرتبطة به، فستُعرض هذه المعلومات أيضاً. تظهر سلسلة الإصدار كلاحقة لاسم الرمز، مسبوقة بحرف @. على سبيل المثال foo@VER_1. إذا كان الإصدار هو الإصدار المبدئي الذي سيُستخدم عند حل المراجع غير المؤرخة للرمز، فسيظهر كلاحقة مسبوقة بحرفي @@. على سبيل المثال foo@@VER_2.
يعرض المدخلات في قسم جدول الرموز الديناميكية في الملف، إن وجد. تنسيق المخرجات هو نفسه التنسيق المستخدم في الخيار --syms.
يعرض محتويات أي جداول رموز LTO في الملف.
يجبر حقل الحجم في جدول الرموز على استخدام الأساس المعطى. وتُعامل أي خيارات غير معروفة على أنها 0. ويمثل --sym-base=0 السلوك المبدئي والقديم. حيث سيخرج الأحجام كأرقام عشرية للأرقام الأقل من 100000. وللأحجام 100000 وأكبر، سيُستخدم الترميز الست عشري مع بادئة 0x. سيعطي --sym-base=8 أحجام الرموز بالنظام الثماني. وسيعطي --sym-base=10 دائماً أحجام الرموز بالنظام العشري. وسيعطي --sym-base=16 دائماً أحجام الرموز بالنظام الست عشري مع بادئة 0x.
فك ترميز (demangle) أسماء الرموز منخفضة المستوى إلى أسماء بمستوى المستخدم. هذا يجعل أسماء دوال ++C قابلة للقراءة. للمجمعات المختلفة أنماط تشويه (mangling) مختلفة. يمكن استخدام وسيط نمط فك الترميز الاختياري لاختيار نمط فك ترميز مناسب لمجمعك.
لا تفك ترميز (demangle) أسماء الرموز منخفضة المستوى. هذا هو الوضع المبدئي.
يمكن أو يعطل حداً لمقدار التكرار المنفذ أثناء فك تشويه السلاسل النصية. بما أن تنسيقات تشويه الأسماء تسمح بمستوى غير محدود من التكرار، فمن الممكن إنشاء سلاسل سيؤدي فك تشفيرها إلى استنفاد مساحة المكدس المتاحة على الجهاز المضيف، مما يتسبب في خطأ في الذاكرة. يحاول هذا الحد منع حدوث ذلك عن طريق تقييد التكرار بـ 2048 مستوى من التداخل.

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

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

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

سيؤدي استخدام --unicode=highlight إلى عرض الأحرف كمتواليات هروب يونيكود ولكنه سيميزها أيضاً باللون الأحمر، بافتراض أن جهاز الإخراج يدعم التلوين. يهدف التلوين إلى جذب الانتباه إلى وجود متواليات يونيكود عندما قد لا تكون متوقعة.

عند عرض تفاصيل الرموز، يُضمّن معلومات إضافية لا تُقدّم عادةً. في الوقت الحالي، يضيف هذا فقط اسم القسم المشار إليه بواسطة حقل فهرس الرمز، في حال وجد. قد تُعرض مزيد من المعلومات في المستقبل عند تفعيل هذا الخيار.

يؤدي تفعيل هذا الخيار فعلياً إلى تفعيل الخيار --wide أيضاً، على الأقل عند عرض معلومات الرمز.

يُعطّل مفعول الخيار --extra-sym-info. وهذا هو الوضع المبدئي.
يُعرض كافة الترويسات في الملف. يكافئ -h -l -S.
يُعرض محتويات مقاطع و/أو أقسام NOTE (الملاحظة)، إن وجدت.
يُعرض محتويات قسم إعادة التوطين الخاص بالملف، إن وجد.
يُعرض محتويات قسم unwind الخاص بالملف، إن وجد. تدعم حالياً أقسام unwind لملفات IA64 ELF فقط، بالإضافة إلى جداول unwind الخاصة بـ ARM (".ARM.exidx" / ".ARM.extab"). إذا لم يُنفّذ الدعم بعد لهيكلية حاسوبك، يمكنك تجربة تفريغ محتويات قسم .eh_frames باستخدام خيارَي --debug-dump=frames أو --debug-dump=frames-interp.
يُعرض محتويات القسم الديناميكي للملف، إن وجد.
يُعرض محتويات أقسام الإصدار في الملف، إن وجدت.
يُعرض المعلومات الخاصة بالهيكلية في الملف، إن وجدت.
عند عرض الرموز، يجعل هذا الخيار readelf يستخدم جداول تلبيد الرموز في القسم الديناميكي للملف، بدلاً من أقسام جدول الرموز.

عند عرض عمليات إعادة التوطين، يجعل هذا الخيار readelf يعرض عمليات إعادة التوطين الديناميكية بدلاً من الساكنة.

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

يحدد الرقم قسماً معيناً حسب الفهرس في جدول الأقسام؛ بينما تحدد أي سلسلة نصية أخرى جميع الأقسام التي تحمل ذلك الاسم في ملف (أو ملفات) المدخلات.

يمكن تكرار هذا الخيار عدة مرات في سطر الأوامر لطلب تفريغات أقسام متعددة.

يطلب فك ضغط القسم (أو الأقسام) التي تُفرغ بواسطة خيارات x أو R أو p قبل عرضها. إذا لم تكن الأقسام مضغوطة، فستُعرض كما هي.
يُعرض معلومات فهرس رموز الملف الموجودة في جزء الترويسة من الأرشيفات الثنائية. يؤدي نفس وظيفة الأمر t للأداة ar، ولكن دون استخدام مكتبة BFD.
يعرض محتويات أقسام تنقيح 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.

يُعرض محتويات الأقسام غير المتعلقة بالتنقيح الموجودة في ملفات معلومات التنقيح (debuginfo) المنفصلة والمرتبطة بالملف الرئيس. يتضمن هذا الخيار آلياً الخيار -wK، وستُعرض فقط الأقسام المطلوبة عبر خيارات سطر الأوامر الأخرى.
اعرض محتويات قسم CTF المحدد. تحتوي أقسام CTF نفسها على العديد من الأقسام الفرعية، والتي يتم عرضها جميعاً بالترتيب.

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

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

إذا حُدّد أي من --ctf-symbols أو --ctf-strings، فيجب تحديد الآخر أيضاً.

يُعرض محتويات أقسام جدول الإزاحة العام (GOT) للملف، إن وجدت. بالنسبة لـ MIPS، يشبه هذا الخيار --arch-specific، ولكنه يعرض فقط المحتويات المتعلقة بـ GOT ويُتجاهل عند استخدام --arch-specific.
يُعرض مدرجاً تكرارياً (histogram) لأطوال قوائم الجراف (bucket list) عند عرض محتويات جداول الرموز.
يُعرض رقم إصدار readelf.
لا تقسم أسطر المخرجات لتناسب 80 عموداً. يقوم readelf مبدئياً بقسمة أسطر ترويسة القسم وقائمة المقاطع لملفات ELF ذات 64 بت، بحيث تناسب 80 عموداً. يجعل هذا الخيار readelf يطبع كل ترويسة قسم أو كل مقطع في سطر واحد، وهو أمر أكثر قابلية للقراءة على الشاشات التي يزيد عرضها عن 80 عموداً.
عادةً عندما يعرض readelf اسم رمز ويضطر لاقتطاعه ليناسب عرض 80 عموداً، فإنه يضيف لاحقة "[...]" إلى الاسم. يُعطل خيار سطر الأوامر هذا هذا السلوك، مما يسمح بعرض 5 أحرف إضافية من الاسم واستعادة سلوك readelf القديم (قبل الإصدار 2.35).
يُعرض خيارات سطر الأوامر التي يفهمها readelf.
@الملف
اقرأ خيارات سطر الأوامر من file. تُدرج الخيارات المقروءة مكان خيار @file الأصلي. إذا كان file غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال.

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

انظر أيضًا

objdump(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.

5 مارس 2026 binutils-2.46