.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX Title "C++FILT 1" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH C++FILT 1 "1 مايو 2026" binutils\-2.46.0 "أدوات تطوير جنو" .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم c++filt \- فك رموز رموز C++ وجافا .SH موجز .IX Header موجز c++filt [\fB\-_\fP|\fB\-\-strip\-underscore\fP] [\fB\-n\fP|\fB\-\-no\-strip\-underscore\fP] [\fB\-p\fP|\fB\-\-no\-params\fP] [\fB\-t\fP|\fB\-\-types\fP] [\fB\-i\fP|\fB\-\-no\-verbose\fP] [\fB\-r\fP|\fB\-\-no\-recurse\-limit\fP] [\fB\-R\fP|\fB\-\-recurse\-limit\fP] [\fB\-s\fP \fIformat\fP|\fB\-\-format=\fP\fIformat\fP] [\fB\-\-help\fP] [\fB\-\-version\fP] [\fIsymbol\fP...] .SH الوصف .IX Header الوصف توفر لغتا C++ وجافا تحميل الدوال، مما يعني أنه يمكنك كتابة دوال كثيرة بنفس الاسم، بشرط أن تأخذ كل دالة معاملات من أنواع مختلفة. للتمييز بين هذه الدوال المتشابهة الأسماء، تقوم C++ وجافا بترميزها إلى اسم مجمع منخفض المستوى يحدد كل نسخة مختلفة بشكل فريد. تُعرف هذه العملية باسم \fIالترميز\fP. يقوم برنامج \&\fBc++filt\fP [1] بالتعيين العكسي: فهو يفك (\fIيفك الترميز\fP) الأسماء منخفضة المستوى إلى أسماء على مستوى المستخدم لتكون قابلة للقراءة. .PP كل كلمة أبجدية رقمية (تتكون من حروف أو أرقام أو شرطات سفلية أو علامات دولار أو نقاط) تظهر في الإدخال هي اسم مشفر محتمل. إذا فك الاسم إلى اسم C++، يحل اسم C++ محل الاسم منخفض المستوى في المخرجات، وإلا يُخرج الكلمة الأصلية. بهذه الطريقة يمكنك تمرير ملف مصدر مجمع كامل، يحتوي على أسماء مشفرة، عبر \fBc++filt\fP ورؤية نفس الملف المصدر الذي يحتوي على أسماء مفكوكة الترميز. .PP يمكنك أيضًا استخدام \fBc++filt\fP لفك رموز فردية بتمريرها في سطر الأوامر: .PP .Vb 1 \& c++filt .Ve .PP إذا لم تُعطَ أي وسائط \fIsymbol\fP، يقرأ \fBc++filt\fP أسماء الرموز من الإدخال القياسي بدلاً من ذلك. تُطبع جميع النتائج على المخرجات القياسية. الفرق بين قراءة الأسماء من سطر الأوامر مقابل قراءة الأسماء من الإدخال القياسي هو أن وسائط سطر الأوامر يُتوقع أن تكون مجرد أسماء مشفرة ولا يُجرى أي فحص لفصلها عن النص المحيط. وهكذا على سبيل المثال: .PP .Vb 1 \& c++filt \-n _Z1fv .Ve .PP سينجح ويفك الاسم إلى "f()" بينما: .PP .Vb 1 \& c++filt \-n _Z1fv, .Ve .PP لن ينجح. (لاحظ الفاصلة الإضافية في نهاية الاسم المشفر التي تجعله غير صالح). لكن هذا الأمر سينجح: .PP .Vb 1 \& echo _Z1fv, | c++filt \-n .Ve .PP وسيعرض "f(),"، أي الاسم المفكوك الترميز متبوعًا بفاصلة لاحقة. هذا السلوك لأنه عندما تُقرأ الأسماء من الإدخال القياسي يُتوقع أنها قد تكون جزءًا من ملف مصدر مجمع حيث قد تكون هناك أحرف إضافية غريبة تتبع الاسم المشفر. على سبيل المثال: .PP .Vb 1 \& .type _Z1fv, @function .Ve .SH الخيارات .IX Header الخيارات .IP \fB\-_\fP 4 .IX Item \-_ .PD 0 .IP \fB\-\-strip\-underscore\fP 4 .IX Item \-\-strip\-underscore .PD في بعض الأنظمة، يضع كل من مصرفي C وC++ شرطة سفلية أمام كل اسم. على سبيل المثال، اسم C \f(CW\*(C`foo\*(C'\fP يحصل على الاسم منخفض المستوى \f(CW\*(C`_foo\*(C'\fP. يزيل هذا الخيار الشرطة السفلية الأولية. ما إذا كان \&\fBc++filt\fP يزيل الشرطة السفلية افتراضيًا يعتمد على الهدف. .IP \fB\-n\fP 4 .IX Item \-n .PD 0 .IP \fB\-\-no\-strip\-underscore\fP 4 .IX Item \-\-no\-strip\-underscore .PD لا تُزل الشرطة السفلية الأولية. .IP \fB\-p\fP 4 .IX Item \-p .PD 0 .IP \fB\-\-no\-params\fP 4 .IX Item \-\-no\-params .PD عند فك تشفير اسم دالة، لا تُعرَض أنواع معاملات الدالة. .IP \fB\-t\fP 4 .IX Item \-t .PD 0 .IP \fB\-\-types\fP 4 .IX Item \-\-types .PD حاول فك تشفير الأنواع بالإضافة إلى أسماء الدوال. هذا معطل مبدئيًا لأن الأنواع المشفرة تُستخدم عادةً داخليًا فقط في المترجم، وقد تُخلط مع أسماء غير مشفرة. على سبيل المثال، دالة تُدعى "a" تُعالج كاسم نوع مشفر سيُفك تشفيرها إلى "signed char". .IP \fB\-i\fP 4 .IX Item \-i .PD 0 .IP \fB\-\-no\-verbose\fP 4 .IX Item \-\-no\-verbose .PD لا تُضمّن تفاصيل التنفيذ (إن وجدت) في المخرجات المفكوك تشفيرها. .IP \fB\-r\fP 4 .IX Item \-r .PD 0 .IP \fB\-R\fP 4 .IX Item \-R .IP \fB\-\-recurse\-limit\fP 4 .IX Item \-\-recurse\-limit .IP \fB\-\-no\-recurse\-limit\fP 4 .IX Item \-\-no\-recurse\-limit .IP \fB\-\-recursion\-limit\fP 4 .IX Item \-\-recursion\-limit .IP \fB\-\-no\-recursion\-limit\fP 4 .IX Item \-\-no\-recursion\-limit .PD يمكن أو يعطل حداً لمقدار التكرار المنفذ أثناء فك تشويه السلاسل النصية. بما أن تنسيقات تشويه الأسماء تسمح بمستوى غير محدود من التكرار، فمن الممكن إنشاء سلاسل سيؤدي فك تشفيرها إلى استنفاد مساحة المكدس المتاحة على الجهاز المضيف، مما يتسبب في خطأ في الذاكرة. يحاول هذا الحد منع حدوث ذلك عن طريق تقييد التكرار بـ 2048 مستوى من التداخل. .Sp المبدئي هو تفعيل هذا الحد، لكن تعطيله قد يكون ضروريًا من أجل حل (demangle) الأسماء المعقدة حقًا. لاحظ مع ذلك أنه إذا عُطل حد العودية، فإن استنفاد المكدس وارد وأي تقارير عن أخطاء بشأن مثل هذا الحدث ستُرفض. .Sp الخيار \fB\-r\fP هو مرادف للخيار \&\fB\-\-no\-recurse\-limit\fP. الخيار \fB\-R\fP هو مرادف للخيار \fB\-\-recurse\-limit\fP. .IP "\fB\-s\fP \fIformat\fP" 4 .IX Item "\-s format" .PD 0 .IP \fB\-\-format=\fP\fIالتنسيق\fP 4 .IX Item \-\-format=format .PD \&\fBc++filt\fP يمكنه فك تشفير طرق تشفير متنوعة، تُستخدم بواسطة مترجمات مختلفة. وسيطة هذا الخيار تختار الطريقة التي يستخدمها: .RS 4 .ie n .IP """auto""" 4 .el .IP \f(CWauto\fR 4 .IX Item auto اختيار آلي بناءً على الملف التنفيذي (الطريقة المبدئية) .ie n .IP """gnu""" 4 .el .IP \f(CWgnu\fR 4 .IX Item gnu الطريقة المستخدمة بواسطة مترجم GNU C++ (g++) .ie n .IP """lucid""" 4 .el .IP \f(CWlucid\fR 4 .IX Item lucid الطريقة المستخدمة بواسطة مترجم Lucid (lcc) .ie n .IP """arm""" 4 .el .IP \f(CWarm\fR 4 .IX Item arm الطريقة المحددة بواسطة دليل المرجع المشروح لـ C++ .ie n .IP """hp""" 4 .el .IP \f(CWhp\fR 4 .IX Item hp الطريقة المستخدمة بواسطة مترجم HP (aCC) .ie n .IP """edg""" 4 .el .IP \f(CWedg\fR 4 .IX Item edg الطريقة المستخدمة بواسطة مترجم EDG .ie n .IP """gnu\-v3""" 4 .el .IP \f(CWgnu\-v3\fR 4 .IX Item gnu\-v3 الطريقة المستخدمة بواسطة مترجم GNU C++ (g++) مع واجهة ABI V3. .ie n .IP """java""" 4 .el .IP \f(CWjava\fR 4 .IX Item java الطريقة المستخدمة بواسطة مترجم GNU Java (gcj) .ie n .IP """gnat""" 4 .el .IP \f(CWgnat\fR 4 .IX Item gnat المُستخدَم من قبل مترجم GNU Ada (GNAT). .RE .RS 4 .RE .IP \fB\-\-help\fP 4 .IX Item \-\-help اطبع ملخص الخيارات لـ \fBc++filt\fP واخرج. .IP \fB\-\-version\fP 4 .IX Item \-\-version اطبع رقم إصدار \fBc++filt\fP واخرج. .IP \fB@\fP\fIالملف\fP 4 .IX Item @file اقرأ خيارات سطر الأوامر من \fIfile\fP. تُدرج الخيارات المقروءة مكان خيار @\fIfile\fP الأصلي. إذا كان \fIfile\fP غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال. .Sp تُفصل الخيارات في \fIfile\fP بمسافات فارغة. يمكن تضمين حرف مسافة فارغة في خيار ما عن طريق إحاطة الخيار بالكامل إما بعلامات اقتباس مفردة أو مزدوجة. يمكن تضمين أي حرف (بما في ذلك الشرطة المائلة العكسية) عن طريق سبق الحرف المراد تضمينه بشرطة مائلة عكسية. يمكن لـ \fIfile\fP نفسه أن يحتوي على خيارات @\fIfile\fP إضافية؛ وتُعالج أي خيارات من هذا القبيل بشكل متكرر (recursively). .SH الحواشي .IX Header الحواشي .IP 1. 4 لا يسمح MS\-DOS بأحرف \f(CW\*(C`+\*(C'\fP في أسماء الملفات، لذا يُسمى هذا البرنامج على MS\-DOS باسم \fBCXXFILT\fP. .SH "انظر أيضًا" .IX Header "انظر أيضًا" مدخلات Info الخاصة بـ \fIbinutils\fP. .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق الطبع والنشر (c) لعام 1991\-2026 لمؤسسة البرمجيات الحرة، المحدودة. .PP يُمنح الإذن بنسخ وتوزيع و/أو تعديل هذا المستند بموجب شروط رخصة جنو للوثائق الحرة (GNU Free Documentation License)، الإصدار 1.3 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ مع عدم وجود أقسام ثابتة، وبدون نصوص غلاف أمامي، وبدون نصوص غلاف خلفي. نُسخة من الرخصة مضمنة في القسم المعنون "GNU Free Documentation License". .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .