جدب - الطباعة متغير ثنائي - خيارات
بعض المساعدة العامة: غب بدء غب، مع عدم وجود برنامج تصحيح ليه غب تبدأ التصحيح برنامج غب برنامج الأساسية تصحيح كوردومب الأساسية التي تنتجها غب برنامج --help وصف خيارات سطر الأوامر 1- أولا وقبل كل العثور على الدليل حيث يتم إنشاء كورفيل. 2- ثم استخدم الأمر لس - ltr في الدليل للعثور على أحدث كورفيل ولدت. 3- لتحميل كوربييل استخدام غب مسار ثنائي كورفيل هذا سيحمل كورفيل. 4- ثم يمكنك الحصول على المعلومات باستخدام الأمر بت. لتتبع الخلفية مفصل استخدام بت الكامل. 5- لطباعة المتغيرات استخدم اسم المتغير للطباعة أو p فاريابل-نيم 6- للحصول على أي مساعدة على خيار استخدام غب أو استخدام أبروبوس سيرتش-توبيك-7 استخدم رقم إطار الإطار للانتقال إلى رقم الإطار المطلوب. 8- استخدم الأمرين n و دون n لتحديد إطارات الرتل n لأعلى وحدد إطارات الرتل n لأسفل على التوالي. 9- لإيقاف غب الإقلاع عن التدخين أو q.8. فحص البيانات الطريقة المعتادة لفحص البيانات في البرنامج الخاص بك هي مع الأمر الطباعة (اختصار p)، أو مرادف لها فحص. يقوم بتقييم وطباعة قيمة تعبير عن اللغة التي تمت كتابة البرنامج بها (انظر القسم باستخدام غب مع لغات مختلفة). طباعة إكسبر طباعة f إكسبر إكسر هو تعبير (في لغة المصدر). افتراضيا يتم طباعة قيمة إكسر في تنسيق مناسب لنوع البيانات الخاصة به يمكنك اختيار تنسيق مختلف عن طريق تحديد f. حيث f عبارة عن رسالة تحدد التنسيق أنظر تنسيقات الإخراج. طباعة طباعة f إذا قمت بإلغاء إكسر. يعرض غب القيمة الأخيرة مرة أخرى (من سجل القيمة راجع قسم قيمة السجل). هذا يسمح لك لتفقد مريح نفس القيمة في شكل بديل. وهناك طريقة أكثر على مستوى منخفض لفحص البيانات مع الأمر x. فإنه يبحث البيانات في الذاكرة على عنوان محدد ويطبع ذلك في تنسيق محدد. راجع القسم فحص الذاكرة. إذا كنت مهتما بمعلومات عن أنواع أو حول كيفية إعلان حقول بنية أو فئة، استخدم الأمر بتيب إكس بدلا من الطباعة. راجع القسم فحص جدول الرموز. 8.1 تعبيرات الطباعة والعديد من الأوامر غب الأخرى تقبل تعبير وحساب قيمته. أي نوع من ثابت أو متغير أو المشغل المحدد من قبل لغة البرمجة التي تستخدمها هو صالح في تعبير في غب. ويشمل ذلك التعبيرات المشروطة، واستدعاءات الوظائف، والرسائل، وثوابت السلسلة. فإنه لسوء الحظ لا يتضمن الرموز التي يحددها قبل المعالج تحديد الأوامر. غب يدعم الثوابت مجموعة في التعبيرات الإدخال من قبل المستخدم. بناء الجملة هو. . على سبيل المثال، يمكنك استخدام الأمر الأوامر لإنشاء مصفوفة في الذاكرة التي هي مالوك إد في البرنامج الهدف. لأن C واسع الانتشار، فإن معظم التعبيرات المبينة في الأمثلة في هذا الدليل هي في C. انظر القسم استخدام غب مع لغات مختلفة. للحصول على معلومات حول كيفية استخدام التعبيرات بلغات أخرى. في هذا القسم، نناقش عوامل التشغيل التي يمكنك استخدامها في تعبيرات غب بغض النظر عن لغة البرمجة. يتم دعم الطوابع في جميع اللغات، وليس فقط في C، لأنه من المفيد جدا لادخال رقم في مؤشر من أجل فحص بنية في هذا العنوان في الذاكرة. غب يدعم هؤلاء المشغلين، بالإضافة إلى تلك الشائعة للغات البرمجة: هو مشغل ثنائي لمعالجة أجزاء من الذاكرة كمصفوفات. انظر القسم مصفوفات اصطناعية. للمزيد من المعلومات. :: يسمح لك لتحديد متغير من حيث الملف أو وظيفة حيث يتم تعريفه. أنظر قسم متغيرات البرنامج. أدر يشير إلى كائن من نوع النوع المخزن في أدر أدر في الذاكرة. قد يكون أدر أي تعبير قيمته عدد صحيح أو مؤشر (ولكن هناك حاجة إلى الأقواس حول المشغلين الثنائيين، كما هو الحال في المدلى بها). يسمح هذا البناء بغض النظر عن نوع البيانات التي من المفترض عادة أن يقيم في أدر. 8.2 متغيرات البرنامج النوع الأكثر شيوعا من التعبير للاستخدام هو اسم متغير في البرنامج. يتم فهم المتغيرات في التعبيرات في إطار المكدس المحدد (انظر القسم تحديد إطار) يجب أن تكون إما: غلوبال (أو فيل-ستاتيك) مرئية وفقا لقواعد نطاق لغة البرمجة من نقطة التنفيذ في هذا الإطار وهذا يعني أن في وظيفة يمكنك فحص واستخدام المتغير كلما البرنامج الخاص بك هو تنفيذ داخل وظيفة فو. ولكن يمكنك فقط استخدام أو فحص المتغير b في حين يتم تنفيذ البرنامج داخل كتلة حيث يتم الإعلان ب. هناك استثناء: يمكنك الرجوع إلى متغير أو دالة نطاقه ملف مصدر واحد حتى إذا لم تكن نقطة التنفيذ الحالية في هذا الملف. ولكن من الممكن أن يكون أكثر من متغير أو وظيفة واحدة بنفس الاسم (في ملفات مصدر مختلفة). إذا حدث ذلك، في اشارة الى هذا الاسم له آثار لا يمكن التنبؤ بها. إذا كنت ترغب في ذلك، يمكنك تحديد متغير ثابت في دالة معينة أو ملف معين، باستخدام تدوين القولون: هنا الملف أو الدالة هو اسم سياق المتغير الثابت. في حالة أسماء الملفات، يمكنك استخدام علامات الاقتباس للتأكد من غب تحليل اسم الملف ككلمة واحدة - على سبيل المثال، لطباعة قيمة عالمية x المعرفة في f2.c. نادرا ما يتعارض هذا الاستخدام: مع الاستخدام المتشابه جدا لنفس الترميز في C. ويدعم غب أيضا استعمال عامل حل نطاق النطاق C في تعبيرات غب. تحذير: أحيانا، قد يظهر المتغير المحلي قيمة خاطئة في نقاط معينة في دالة - فقط بعد الدخول إلى نطاق جديد، وقبل الخروج مباشرة. قد ترى هذه المشكلة عندما تكون خطوة بخطوة بواسطة تعليمات الماكينة. ويرجع ذلك إلى أنه، في معظم الآلات، فإنه يأخذ أكثر من تعليمات لإعداد إطار مكدس (بما في ذلك تعريفات المتغيرات المحلية) إذا كنت تخطو بواسطة تعليمات الجهاز، قد تظهر المتغيرات أن القيم الخاطئة حتى يتم بناء إطار المكدس تماما. عند الخروج، وعادة ما يستغرق أيضا أكثر من جهاز واحد تعليمات لتدمير إطار المكدس بعد أن تبدأ من خلال تلك المجموعة من التعليمات، قد تكون قد انتهت تعريفات المتغير المحلية. قد يحدث هذا أيضا عندما يقوم المجمع بتحسينات كبيرة. للتأكد من رؤية القيم الدقيقة دائما، قم بإيقاف كل التحسين عند الترجمة. وهناك تأثير آخر محتمل لتحسينات المترجم هو تحسين المتغيرات غير المستخدمة من الوجود، أو تعيين المتغيرات على السجلات (على عكس عناوين الذاكرة). اعتمادا على الدعم لمثل هذه الحالات التي يوفرها تنسيق معلومات التصحيح المستخدمة من قبل المترجم، قد لا يكون غب قادرا على عرض قيم لمثل هذه المتغيرات المحلية. إذا حدث ذلك، سوف غب طباعة رسالة مثل هذا: لحل هذه المشاكل، إما إعادة ترجمة دون التحسينات، أو استخدام تنسيق معلومات تصحيح مختلفة، إذا كان برنامج التحويل البرمجي يدعم العديد من هذه التنسيقات. على سبيل المثال، دول مجلس التعاون الخليجي، غنو سيسي مترجم عادة ما يدعم الخيار - gstabs. - gstabs تنتج معلومات التصحيح في شكل متفوقة على صيغ مثل كوف. قد تكون قادرا على استخدام DWARF2 (-gdwarf-2)، والذي هو أيضا شكل فعال للمعلومات التصحيح. راجع قسم خيارات تصحيح برنامجك أو غنو سيسي باستخدام غنو سيسي. للمزيد من المعلومات. المعامل الأيسر من يجب أن يقيم في الذاكرة. تتصرف قيم الصفيف التي يتم التعامل معها بهذه الطريقة تماما مثل المصفوفات الأخرى من حيث التسجيل الفرعي، ويتم إجبارها على المؤشرات عند استخدامها في التعبيرات. المصفوفات الاصطناعية غالبا ما تظهر في التعبيرات عبر تاريخ القيمة (انظر القسم قيمة التاريخ)، بعد طباعة واحدة خارج. طريقة أخرى لإنشاء مصفوفة مصطنعة هي استخدام المدلى بها. يؤدي هذا إلى إعادة تفسير قيمة كما لو كانت صفيفا. يجب أن لا تكون القيمة في الذاكرة: كراحة، إذا تركت طول الصفيف خارج (كما في (نوع) قيمة غب يحسب حجم لملء القيمة (حجم سيزوف (فالو) سيزوف (نوع) في بعض الأحيان مصفوفة الاصطناعي آلية ليست كافية بما فيه الكفاية في هياكل البيانات المعقدة إلى حد ما، قد لا تكون عناصر الاهتمام في الواقع متاخمة - على سبيل المثال، إذا كنت مهتما في قيم المؤشرات في مصفوفة. ومن المفيد العمل في هذا الوضع هو استخدام (انظر القسم المتغيرات الراحة) كعداد في التعبير الذي يطبع القيمة الأولى المثيرة للاهتمام، ثم كرر هذا التعبير عن طريق ريت على سبيل المثال، لنفترض أن لديك دتاب مجموعة من المؤشرات إلى الهياكل، وكنت مهتما في القيم من حقل فف في كل بنية، وفيما يلي مثال لما يمكن أن تكتبه: 8.4 تنسيقات الإخراج افتراضيا، يطبع غب قيمة وفقا لنوع بياناته، وأحيانا هذا ليس ما تريده، فعلى سبيل المثال، قد ترغب في الطباعة عدد في عرافة، أو بو بين عشري. أو قد ترغب في عرض البيانات في الذاكرة على عنوان معين كسلسلة حروف أو كتعليمة. للقيام بهذه الأمور، حدد تنسيق الإخراج عند طباعة قيمة. إن أبسط استخدام لأشكال الإخراج هو كيفية طباعة قيمة محسوبة بالفعل. ويتم ذلك من خلال بدء وسيطات الأمر الطباعة مع شرطة مائلة وحروف تنسيق. أحرف التنسيق المدعومة هي: x قم بتقدير البتات للقيمة كعدد صحيح، وقم بطباعة العدد الصحيح بالسداسي عشري. د الطباعة كعدد صحيح في العشرية الموقعة. u طباعة كعدد صحيح في عشري غير موقعة. o طباعة عدد صحيح في الثماني. t طباعة عدد صحيح في ثنائي. الحرف t يقف على اثنين. (2) a طباعة كعنوان، على حد سواء المطلق في ست عشري وكإزاحة من أقرب الرمز السابق. يمكنك استخدام هذا التنسيق المستخدم لاكتشاف حيث (في أي وظيفة) عنوان غير معروف يقع: رمز معلومات الأمر 0x54320 يعطي نتائج مماثلة. انظر رمز معلومات القسم. (ج) يعتبر عدد صحيح وطبعه على أنه حرف ثابت. (و) تذكر البتات للقيمة كعدد نقطة عائمة وطباعتها باستخدام بناء الجملة العائمة النموذجية. على سبيل المثال، لطباعة عداد البرنامج في عرافة (راجع القسم 8.10 السجلات)، اكتب لاحظ أنه لا توجد مساحة مطلوب قبل شرطة مائلة لأن أسماء الأوامر في غب لا يمكن أن تحتوي على شرطة مائلة. لإعادة طباعة القيمة الأخيرة في سجل القيمة بتنسيق مختلف، يمكنك استخدام الأمر الطباعة بتنسيق فقط وليس تعبير. على سبيل المثال، يعيد بس إعادة طباعة القيمة الأخيرة في عرافة. 8.5 فحص الذاكرة يمكنك استخدام الأمر x (لفحص) لفحص الذاكرة بأي من التنسيقات المتعددة، بشكل مستقل عن أنواع بيانات البرامج. x نفو أدر x أدر x استخدم الأمر x لفحص الذاكرة. ن. F. و u جميع المعلمات الاختيارية التي تحدد مقدار الذاكرة لعرض وكيفية تنسيقه أدر هو تعبير عن العنوان الذي تريد بدء عرض الذاكرة فيه. إذا كنت تستخدم الإعدادات الافتراضية ل نفو. لا تحتاج إلى كتابة الشرطة المائلة. العديد من الأوامر تعيين الإعدادات الافتراضية مريحة ل أدر. ن. عدد التكرارات عدد التكرار هو عدد صحيح عشري هو الافتراضي 1. وهو يحدد مقدار الذاكرة (عد بواسطة وحدات ش) للعرض. F. تنسيق العرض تنسيق العرض هو أحد التنسيقات المستخدمة بواسطة الطباعة. s (سلسلة إنهاء فارغة)، أو i (تعليمات الجهاز). الافتراضي هو x (ست عشري) في البداية. التغييرات الافتراضية في كل مرة تستخدم إما x أو الطباعة. ش. حجم الوحدة حجم الوحدة هو أي من بايت ب. h هالفوردز (اثنان بايت). w الكلمات (أربعة بايت). هذا هو الافتراضي الأولي. (ز) الكلمات العملاقة (ثمانية بايتات). في كل مرة تحدد فيها حجم وحدة مع x. يصبح هذا الحجم الوحدة الافتراضية في المرة التالية التي تستخدم فيها x. (بالنسبة للنسق s و i، يتم تجاهل حجم الوحدة ولا يتم كتابته عادة). أدر. بدءا عنوان أدر أدر هو العنوان حيث تريد غب لبدء عرض الذاكرة. لا يحتاج التعبير إلى قيمة مؤشر (على الرغم من أنه قد) يتم تفسيره دائما كعنوان صحيح لبايت الذاكرة. انظر القسم التعبيرات. لمزيد من المعلومات حول التعبيرات. الافتراضي ل أدر هو عادة بعد آخر عنوان تم فحصه - ولكن العديد من الأوامر الأخرى أيضا تعيين العنوان الافتراضي: نقاط كسر المعلومات (إلى عنوان آخر نقطة توقف مدرجة)، خط المعلومات (إلى عنوان البداية من خط)، و (إذا كنت تستخدم لعرض قيمة من الذاكرة). على سبيل المثال، x3uh 0x54320 هو طلب لعرض ثلاثة هالفوردز (h) من الذاكرة، وتهيئتها كأعداد صحيحة عشري غير موقعة (ش)، بدءا من العنوان 0x54320. x4xw سب يطبع أربع كلمات (ث) من الذاكرة فوق مؤشر كومة (هنا، سب انظر قسم السجلات) في ست عشري (x). وبما أن الحروف التي تشير إلى أحجام الوحدات تختلف عن الأحرف التي تحدد تنسيقات الإخراج، فلن تحتاج إلى تذكر ما إذا كان حجم الوحدة أو التنسيق يأتي أولا من أجل العمل. مواصفات الانتاج 4xw و 4wx يعني بالضبط نفس الشيء. (ومع ذلك، فإن عدد ن يجب أن يأتي wx4 الأولى لا يعمل.) على الرغم من أن يتم تجاهل حجم الوحدة ش لصيغ s و i. قد لا تزال ترغب في استخدام العد ن على سبيل المثال، 3i يحدد أنك تريد أن ترى ثلاثة تعليمات الجهاز، بما في ذلك أي المعاملات. الأمر تفكيك يعطي وسيلة بديلة لفحص تعليمات الجهاز انظر المصدر ورمز الجهاز. تم تصميم جميع الافتراضات للحجج إلى x لجعل من السهل مواصلة مسح الذاكرة مع الحد الأدنى من المواصفات في كل مرة تستخدم فيها x. على سبيل المثال، بعد أن قمت بتفتيش ثلاثة تعليمات الجهاز مع أدر x3i. يمكنك فحص السبعة المقبلة مع X7 فقط. إذا كنت تستخدم ريت لتكرار الأمر x، يتم استخدام عدد تكرار n مرة أخرى الوسيطة الأخرى الافتراضية كما في الاستخدامات المتعاقبة من x. لا يتم حفظ العناوين والمحتويات التي تم طباعتها بواسطة الأمر x في سجل القيمة لأنه غالبا ما يكون هناك الكثير منهم وسيحصلون على الطريق. بدلا من ذلك، غب يجعل هذه القيم متاحة لاستخدامها لاحقا في التعبيرات كقيم للمتغيرات الراحة و. بعد أمر x، يكون العنوان الأخير الذي تم فحصه متاحا للاستخدام في التعبيرات في متغير الراحة. محتويات هذا العنوان، كما تم فحصها، متوفرة في المتغير المناسب. إذا كان الأمر x يحتوي على عدد مرات تكرار، فإن العنوان والمحتويات المحفوظة من وحدة الذاكرة الأخيرة المطبوعة ليست نفس العنوان الأخير المطبوع إذا تمت طباعة عدة وحدات على السطر الأخير من الإخراج. 8.6 العرض التلقائي إذا وجدت أنك تريد طباعة قيمة تعبير بشكل متكرر (لمعرفة كيف يتغير)، قد ترغب في إضافته إلى قائمة العرض التلقائية بحيث يقوم غب بطباعة قيمته في كل مرة يتوقف فيها البرنامج. يعطى كل تعبير إضافة إلى القائمة رقما لتحديده لإزالة تعبير من القائمة، يمكنك تحديد هذا الرقم. تبدو الشاشة التلقائية كما يلي: تعرض هذه الشاشة أرقام العناصر والتعبيرات وقيمها الحالية. كما هو الحال مع العروض التي تطلب يدويا باستخدام x أو الطباعة. يمكنك تحديد تنسيق الإخراج الذي تفضله في الواقع، ويعرض العرض ما إذا كان سيتم استخدام الطباعة أو x اعتمادا على كيفية تفصيل مواصفات التنسيق الخاص بك - فإنه يستخدم x إذا قمت بتحديد حجم وحدة، أو أحد التنسيقين (ط و s) التي يتم دعمها فقط من قبل x وإلا فإنه يستخدم الطباعة. ديسبلاي إكسر أضف تعبير إكسبر إلى قائمة التعبيرات لعرضها في كل مرة يتوقف فيها البرنامج. انظر القسم التعبيرات. لا تكرر العرض إذا ضغطت ريت مرة أخرى بعد استخدامه. ديسبلاي فمت إكسبر ل فمت تحديد تنسيق العرض فقط وليس حجم أو عد، إضافة إكسبر التعبير إلى قائمة العرض التلقائي ولكن ترتيب لعرضه في كل مرة في تنسيق محدد فمت. راجع قسم تنسيقات الإخراج. عرض فمت أدر ل فمت i أو s. أو بما في ذلك وحدة حجم أو عدد من الوحدات، إضافة عبارة أدر كعنوان ذاكرة ليتم فحصها في كل مرة يتوقف البرنامج الخاص بك. فحص يعني في الواقع القيام x فمت أدر. راجع القسم فحص الذاكرة. على سبيل المثال، بيسي ديفيسيري يمكن أن تكون مفيدة، لمعرفة تعليمات الجهاز على وشك أن تنفذ في كل مرة يتوقف التنفيذ (بيسي هو اسم شائع للعنصر برنامج انظر قسم السجلات). دونزبيلاي دنومز. حذف عرض دنومز. قم بإزالة أرقام العناصر دنوم من قائمة التعبيرات المراد عرضها. وديسبلاي لا تكرار إذا قمت بالضغط ريت بعد استخدامه. (وإلا سوف تحصل فقط على الخطأ لا رقم العرض.) تعطيل دنوم العرض. تعطيل عرض أرقام العناصر دنومز. لا يتم طباعة عنصر عرض معطل تلقائيا، ولكن لا يتم نسيانه. قد يتم تمكينه مرة أخرى لاحقا. تمكين دنوم العرض. تمكين عرض أرقام العناصر دنومز. يصبح فعال مرة أخرى في عرض السيارات من التعبير، حتى تحدد خلاف ذلك. عرض عرض القيم الحالية للتعابير في القائمة، تماما كما هو الحال عندما يتوقف البرنامج الخاص بك. إنفو ديسبلاي قم بطباعة قائمة التعبيرات التي تم إعدادها مسبقا للعرض تلقائيا، كل واحد مع رقم البند الخاص به، ولكن بدون إظهار القيم. وهذا يشمل تعبيرات المعوقين، والتي يتم وضع علامة على هذا النحو. كما يتضمن تعبيرات لن يتم عرضها في الوقت الحالي لأنها تشير إلى المتغيرات التلقائية غير المتاحة حاليا. إذا كان تعبير العرض يشير إلى المتغيرات المحلية، فإنه لا معنى له خارج السياق المعجمية التي تم إعداده. يتم تعطيل هذا التعبير عندما يدخل التنفيذ سياق حيث لم يتم تعريف أحد متغيراته. على سبيل المثال، إذا كنت تعطي لاستشار عرض الأوامر أثناء وجود دالة مع حجة لاستشار. يعرض غب هذه الوسيطة بينما يستمر برنامجك للتوقف داخل هذه الوظيفة. عندما يتوقف في مكان آخر - حيث لا يوجد متغير لاستشار --- يتم تعطيل العرض تلقائيا. في المرة القادمة يتوقف البرنامج حيث لاستشار له معنى، يمكنك تمكين التعبير عرض مرة أخرى. يمكنك استخدام تعيين عنوان الطباعة إيقاف للقضاء على جميع شاشات تعتمد الجهاز من واجهة غب. على سبيل المثال، مع إيقاف عنوان الطباعة. يجب أن تحصل على نفس النص ل باكتراسيس على جميع الآلات - سواء كانت أو لا تنطوي على الحجج مؤشر. إظهار عنوان الطباعة إظهار ما إذا كان سيتم طباعة العناوين أم لا. عندما يطبع غب عنوان رمزي، فإنه يطبع عادة أقرب رمز في وقت سابق بالإضافة إلى إزاحة. إذا كان هذا الرمز لا يحدد عنوان فريد (على سبيل المثال، هو اسم نطاقه ملف مصدر واحد)، قد تحتاج إلى توضيح. طريقة واحدة للقيام بذلك هي مع خط المعلومات. على سبيل المثال إنفو إنفو 0x4537. بدلا من ذلك، يمكنك تعيين غب لطباعة ملف المصدر ورقم السطر عندما يطبع عنوان رمزي: تعيين رمز الطباعة اسم الملف على تيل غب لطباعة اسم الملف المصدر ورقم سطر رمز في شكل رمزي من عنوان. سيت برينت سيمبول-فلنام أوف لا تطبع اسم ملف المصدر ورقم السطر للرمز. هذا هو الإعداد الافتراضي. شو برينت سيمبول-فلنام إظهار ما إذا كان غب سيقوم بطباعة اسم الملف المصدر ورقم السطر لرمز في النموذج الرمزي لعنوان. حالة أخرى حيث أنه من المفيد إظهار أسماء الملفات الرمز وأرقام السطر عند تفكيك كود غب يظهر لك رقم السطر وملف المصدر الذي يتوافق مع كل تعليمات. أيضا، قد ترغب في رؤية النموذج الرمزي فقط إذا كان العنوان الذي يتم طباعته قريب بشكل معقول من أقرب رمز سابق: تعيين الطباعة ماكس-رمزي-أوفست ماكس-أوفست أخبر غب لعرض النموذج الرمزي لعنوان ما إذا كان الإزاحة بين أقرب رمز سابق والعنوان أقل من ماكس-أوفست. الافتراضي هو 0، الذي يخبر غب لطباعة دائما النموذج الرمزي لعنوان إذا كان أي رمز يسبق ذلك. شو برينت ماكس-رمزي-أوفست اسأل كيف يكون الحد الأقصى للإزاحة هو أن غب يطبع في عنوان رمزي. إذا كان لديك مؤشر وكنت غير متأكد من حيث يشير، حاول تعيين رمز الطباعة اسم الملف على. ثم يمكنك تحديد اسم وموقع ملف المصدر للمتغير حيث يشير، وذلك باستخدام مؤشر با. هذا يفسر العنوان في شكل رمزي. على سبيل المثال، هنا يظهر غب أن نقطة بت متغيرة عند متغير آخر t. المعرفة في hi2.c. تحذير: بالنسبة إلى المؤشرات التي تشير إلى متغير محلي، لا يعرض با اسم الرمز واسم الملف للمرجع، حتى مع تشغيل خيارات الطباعة المحددة المناسبة. تتحكم إعدادات أخرى في كيفية طباعة أنواع مختلفة من الكائنات: تعيين مجموعة الطباعة مجموعة صفيف الطباعة على صفائف طباعة جميلة. هذا الشكل هو أكثر ملاءمة للقراءة، ولكن يستخدم مساحة أكبر. الإعداد الافتراضي هو إيقاف. تعيين مجموعة الطباعة قبالة العودة إلى تنسيق مضغوط للمصفوفات. عرض مجموعة الطباعة إظهار ما إذا تم تحديد تنسيق مضغوط أو جميل لعرض المصفوفات. تعيين عناصر الطباعة نومبر-أوف-إليمنتس تعيين حد على عدد عناصر مصفوفة غب سيتم طباعتها. إذا كان غب يقوم بطباعة صفيف كبير، فإنه يتوقف عن الطباعة بعد أن قام بطباعة عدد العناصر التي تم تعيينها بواسطة أمر عناصر الطباعة المحددة. ينطبق هذا الحد أيضا على عرض السلاسل. عندما يبدأ غب، يتم تعيين هذا الحد إلى 200. تعيين عدد من العناصر إلى صفر يعني أن الطباعة غير محدودة. عرض عناصر الطباعة عرض عدد عناصر صفيف كبير سيتم طباعة غب. إذا كان الرقم 0، ثم الطباعة غير محدودة. تعيين طباعة نول-ستوب سبب غب لوقف طباعة أحرف مصفوفة عند أول نول مصادفة. وهذا مفيد عندما تحتوي المصفوفات الكبيرة فعلا على سلاسل قصيرة فقط. الإعداد الافتراضي هو إيقاف. تعيين طباعة جميلة على سبب غب لطباعة الهياكل في شكل مسنن مع عضو واحد في كل سطر، مثل هذا: تعيين طباعة جميلة قبالة سبب غب لطباعة الهياكل في شكل مضغوط، مثل هذا: هذا هو الشكل الافتراضي. عرض طباعة جميلة تظهر الشكل الذي يستخدم غب لطباعة الهياكل. تعيين طباعة سبعة سلاسل على الطباعة باستخدام أحرف سبعة بت فقط إذا تم تعيين هذا الخيار، يعرض غب أي أحرف ثمانية بت (في سلاسل أو قيم الأحرف) باستخدام التدوين نن. هذا الإعداد هو الأفضل إذا كنت تعمل في اللغة الإنجليزية (أسي) وكنت تستخدم بت ترتيب عالية من الأحرف كعلامة أو ميتا بت. تعيين طباعة سبعة سلاسل - قبالة طباعة كامل ثمانية بت الأحرف. وهذا يسمح باستخدام المزيد من مجموعات الأحرف الدولية، وهو الافتراضي. شو برينت سيفينبيت-سترينغس إظهار ما إذا كان غب يقوم بطباعة أحرف سبعة بت فقط. تعيين طباعة الاتحاد على تل غب لطباعة النقابات التي ترد في الهياكل. هذا هو الإعداد الافتراضي. تعيين طباعة الاتحاد قبالة أخبر غب عدم طباعة النقابات التي ترد في الهياكل. شو برينت ونيون اسأل غب عما إذا كانت ستطبع النقابات التي ترد في الهياكل أم لا. على سبيل المثال، نظرا لإعلانات هذه الإعدادات هي ذات أهمية عند تصحيح C البرامج: تعيين طباعة ديمانغل تعيين ديمانغل الطباعة على أسماء الطباعة C في شكل مصدرها بدلا من في ترميز (مانغلد) النموذج الذي تم تمريره إلى المجمع والرابط للربط آمنة نوع . الإعداد الافتراضي قيد التشغيل. شو برينت ديمانغل إظهار ما إذا كانت أسماء C مطبوعة في شكل مانغلد أو مدمر. تعيين طباعة أسم-ديمانغل تعيين طباعة أسم-ديمانغل على طباعة C الأسماء في شكل مصدرها بدلا من شكلها مانغلد، حتى في المطبوعات رمز المجمع مثل تفكيك التعليمات. الإعداد الافتراضي هو إيقاف. شو برينت أسم-ديمانغل إظهار ما إذا كانت الأسماء C في قوائم التجميع مطبوعة في شكل مانغلد أو مدمر. سيت ديمانغل-ستايل ستايل اختر من بين عدة مخططات ترميز مستخدمة من قبل مترجمين مختلفين لتمثيل أسماء C. الخيارات للأسلوب هي حاليا: السيارات السماح غب لاختيار نمط فك التشفير عن طريق فحص البرنامج الخاص بك. غنو فك يعتمد على غنو C مترجم (ز) خوارزمية الترميز. هذا هو الإعداد الافتراضي. هب فك يعتمد على خوارزمية ترميز هب أنسي C (أسك). فك شفرة واضحة استنادا إلى C المحول المترجم (لس) خوارزمية الترميز. الذراع فك باستخدام الخوارزمية في الدليل المرجعي المشروح C. تحذير: هذا الإعداد وحده غير كاف للسماح تصحيح الأخطاء التنفيذية المنفذة على الواجهة الأمامية. وسيحتاج البنك إلى مزيد من التحسين للسماح بذلك. إذا حذفت النمط. سترى قائمة من الأشكال الممكنة. شو ديمانغل-ستايل اعرض نمط الترميز المستخدم حاليا لفك الرموز C. تعيين كائن الطباعة تعيين كائن الطباعة على عند عرض مؤشر إلى كائن تحديد نوع (المشتقة) الفعلي للكائن بدلا من النوع المعلن باستخدام جدول الدالة الظاهري. تعيين كائن الطباعة إيقاف عرض فقط نوع المعلنة من الكائنات، دون الرجوع إلى جدول الدالة الظاهري. هذا هو الإعداد الافتراضي. إظهار كائن الطباعة إظهار ما إذا كانت أنواع الكائنات الفعلية أو المعلنة يتم عرضها. تعيين الطباعة ثابت أعضاء تعيين طباعة ثابت أعضاء على طباعة أعضاء ثابت عند عرض كائن C. الإعداد الافتراضي قيد التشغيل. تعيين طباعة ثابتة أعضاء قبالة لا طباعة أعضاء ثابت عند عرض كائن C. شو برينت ستاتيك-ميمبرس إظهار ما إذا كان أعضاء C ثابتون مطبوعون أم لا. مجموعة طباعة فتبل طباعة طباعة فتبل على جميلة الطباعة c الظاهري وظيفة الجداول. الإعداد الافتراضي هو إيقاف. (أوامر فتب لا تعمل على البرامج التي تم تجميعها مع هب أنسي C مترجم (أسك).) تعيين طباعة فتبل إيقاف لا طباعة جميلة C وظائف الدالة الافتراضية. إظهار طباعة فتبل إظهار ما إذا كانت جداول الوظائف الافتراضية C مطبوعة بشكل جميل أم لا. 8.9 المتغيرات الراحة يوفر غب المتغيرات الراحة التي يمكنك استخدامها داخل غب للاستمرار في قيمة والرجوع إليها في وقت لاحق. هذه المتغيرات موجودة تماما داخل غب أنها ليست جزءا من البرنامج الخاص بك، ووضع متغير الراحة ليس له تأثير مباشر على مواصلة تنفيذ البرنامج الخاص بك. هذا هو السبب في أنك يمكن استخدامها بحرية. المتغيرات الراحة مسبوقة. أي اسم مسبوق يمكن استخدامها لمتغير الراحة، إلا إذا كانت واحدة من أسماء محددة محددة مسبقا آلة محددة (انظر القسم السجلات). (مراجع التاريخ القيمة، على النقيض من ذلك، هي أرقام يسبقها انظر قسم القيمة التاريخ.) يمكنك حفظ قيمة في متغير مريح مع تعبير التعيين، تماما كما كنت تعيين متغير في البرنامج الخاص بك. على سبيل المثال: سيوفر في فو القيمة الواردة في الكائن المشار إليه بواسطة أوبجكتبتر. يؤدي استخدام متغير الراحة لأول مرة إلى إنشائه، ولكن قيمته باطلة حتى تقوم بتعيين قيمة جديدة. يمكنك تغيير القيمة مع مهمة أخرى في أي وقت. متغيرات الراحة ليس لها أنواع ثابتة. يمكنك تعيين متغير ملاءمة أي نوع من القيمة، بما في ذلك الهياكل والمصفوفات، حتى لو كان هذا المتغير بالفعل قيمة من نوع مختلف. متغير الراحة، عند استخدامه كتعبير، لديه نوع قيمته الحالية. إظهار الراحة طباعة قائمة من المتغيرات الراحة المستخدمة حتى الآن، وقيمها. عرض مختصر. واحدة من الطرق لاستخدام متغير الراحة هو كعداد لزيادة أو مؤشر لتكون متقدمة. على سبيل المثال، لطباعة حقل من العناصر المتتالية من مجموعة من الهياكل: كرر هذا الأمر عن طريق كتابة ريت. يتم إنشاء بعض المتغيرات الراحة تلقائيا من قبل غب والقيم نظرا المرجح أن تكون مفيدة. يتم تعيين المتغير تلقائيا بواسطة الأمر x إلى العنوان الأخير الذي تم فحصه (راجع القسم فحص الذاكرة). الأوامر الأخرى التي توفر عنوان افتراضي ل x لفحص أيضا تعيين إلى هذا العنوان وتشمل هذه الأوامر سطر المعلومات ونقطة المعلومات. نوع الفراغ إلا إذا تم تعيينه بواسطة الأمر x، وفي هذه الحالة يكون مؤشر لنوع. يتم تعيين المتغير تلقائيا بواسطة الأمر x إلى القيمة الموجودة في آخر عنوان تم فحصه. يتم اختيار نوعه لمطابقة الشكل الذي تمت طباعة البيانات به. إكسيتكود يتم تعيين رمز الخروج المتغير تلقائيا إلى رمز الخروج عند إنهاء البرنامج الذي يتم تصحيحه. على أنظمة هب-أوكس، إذا كنت تشير إلى دالة أو اسم متغير يبدأ بعلامة الدولار، فإن غب يبحث عن اسم مستخدم أو نظام أولا، قبل أن يبحث عن متغير ملائم. 8.12 سمات منطقة الذاكرة تسمح لك سمات منطقة الذاكرة بوصف المعالجة الخاصة المطلوبة من قبل مناطق الذاكرة المستهدفة. يستخدم غب سمات لتحديد ما إذا كان يسمح لأنواع معينة من الذاكرة بالوصول إلى ما إذا كان سيتم استخدام الوصول إلى عرض معين وما إذا كان ذاكرة التخزين المؤقت الهدف. يمكن تمكين مناطق الذاكرة المحددة وتعطيلها بشكل فردي. عند تعطيل منطقة الذاكرة، يستخدم غب السمات الافتراضية عند الوصول إلى الذاكرة في تلك المنطقة. وبالمثل، إذا لم يتم تعريف مناطق الذاكرة، يستخدم غب السمات الافتراضية عند الوصول إلى كافة الذاكرة. عندما يتم تعريف منطقة الذاكرة، يتم إعطاء رقم لتحديده لتمكين منطقة الذاكرة أو تعطيلها أو إزالتها، يمكنك تحديد هذا الرقم. ميم address1 address2. تعريف منطقة الذاكرة التي يحدها العنوان 1 و address2 مع سمات سمات. . حذف ميم نومز. قم بإزالة أسماء مناطق الذاكرة. . تعطيل ميم نومز. تعطيل مناطق الذاكرة نومس. . لا يتم نسيان منطقة الذاكرة المعطلة. قد يتم تمكينه مرة أخرى لاحقا. تمكين ميم نومز. تمكين عدد مناطق الذاكرة. . إنفو ميم طباعة جدول لكل مناطق الذاكرة المعرفة، مع الأعمدة التالية لكل منطقة. رقم منطقة الذاكرة ممكن أو معطل. تم وضع علامة على مناطق الذاكرة الممكنة مع y. يتم تمييز مناطق الذاكرة المعطلة ب n. لو العنوان العنوان الذي يحدد الحد الأدنى الشامل لمنطقة الذاكرة. مرحبا العنوان العنوان الذي يحدد الحد الأعلى الحصري لمنطقة الذاكرة. السمات قائمة السمات المحددة لمنطقة الذاكرة هذه. 8.13 النسخ بين الذاكرة وملف تفريغ الأوامر. ألحق. واستعادة تستخدم لنسخ البيانات بين الذاكرة المستهدفة وملف. يتم كتابة البيانات إلى ملف باستخدام تفريغ أو إلحاق. واستعادتها من ملف إلى الذاكرة باستخدام استعادة. قد تكون الملفات ثنائية، سريك، إنتيل هيكس، أو تيككس (ولكن يمكن إلحاق الملفات الثنائية فقط). تفريغ الذاكرة الثنائية اسم الملف ستارتادر إندادر تفريغ محتويات الذاكرة من ستارتادر إلى إندادر إلى ملف اسم الملف الثنائي الخام. إلحاق الذاكرة الثنائية اسم الملف ستارتادر إندادر إلحاق محتويات الذاكرة من ستارتادر إلى إندادر إلى ملف ملف تنسيق ثنائي الخام. تفريغ القيمة الثنائية اسم الملف التعبير تفريغ قيمة التعبير إلى ملف ثنائي ملف ملف ثنائي. إلحاق الذاكرة الثنائية اسم الملف التعبير إلحاق قيمة التعبير إلى الملف الثاني ملف ملف ثنائي. تفريغ اسم ملف الذاكرة إهيكس ستارتادر إندادر تفريغ محتويات الذاكرة من ستارتادر إلى إندادر إلى تنسيق ملف تنسيق عرافة إنتيل. تفريغ إهكس قيمة اسم الملف التعبير تفريغ قيمة التعبير إلى تنسيق إنتيل عرافة ملف اسم الملف. تفريغ سريك اسم الملف ستارتادر إندادر تفريغ محتويات الذاكرة من ستارتادر إلى إندادر في ملف تنسيق ملف سريك. تفريغ سريك قيمة اسم الملف التعبير تفريغ قيمة التعبير إلى سريك تنسيق ملف اسم الملف. تفريغ تيكهيكس اسم الملف ستارتادر إندادر تفريغ محتويات الذاكرة من ستارتادر إلى إندادر في تيكهكس تنسيق ملف اسم الملف. تفريغ قيمة تخيكس اسم الملف تفريغ قيمة التعبير في تيكهكس شكل ملف اسم الملف. استعادة اسم الملف ثنائي التحيز بداية نهاية استعادة محتويات ملف اسم الملف في الذاكرة. يمكن أن يتعرف الأمر ريستور تلقائيا على أي تنسيق ملف بفد معروف، باستثناء ثنائي ثنائي. لاستعادة ملف ثنائي الخام يجب استخدام ثنائي وسيطة اختياري بعد اسم الملف. إذا كان التحيز غير صفر، فستتم إضافة قيمته إلى العناوين الواردة في الملف. الملفات الثنائية تبدأ دائما في العنوان صفر، لذلك سيتم استعادتها في التحيز العنوان. ملفات بفد أخرى لها موقع مدمج سيتم استعادتها على التحيز الإزاحة من هذا الموقع. إذا كانت بداية نهاية أندور غير صفرية، فستتم استعادة البيانات فقط بين بداية إزاحة الملف ونهاية إزاحة الملف. هذه الإزاحات هي نسبة إلى عناوين في الملف قبل تطبيق الوسيطة التحيز. 18.1 الأوامر لتحديد الملفات قد ترغب في تحديد أسماء ملفات تفريغ قابلة للتنفيذ الأساسية. الطريقة المعتادة للقيام بذلك هي في وقت البدء، وذلك باستخدام الحجج لأوامر بدء غب ق (انظر الحصول على وخروج من غب). من الضروري أحيانا تغيير إلى ملف آخر أثناء جلسة غب. أو يمكنك تشغيل غب ونسيان تحديد ملف تريد استخدامه. أو كنت تصحيح هدف بعيد عن طريق غبسيرفر (انظر الملف). في هذه الحالات أوامر غب لتحديد ملفات جديدة مفيدة. فيلنام اسم الملف استخدم اسم الملف كبرنامج ليتم تصحيحه. يتم قراءتها لرموزها ومحتويات الذاكرة النقية. هو أيضا البرنامج الذي تم تنفيذه عند استخدام الأمر تشغيل. If you do not specify a directory and the file is not found in the gdb working directory, gdb uses the environment variable PATH as a list of directories to search, just as the shell does when looking for a program to run. You can change the value of this variable, for both gdb and your program, using the path command. You can load unlinked object. o files into gdb using the file command. You will not be able to ldquorunrdquo an object file, but you can disassemble functions and inspect variables. Also, if the underlying BFD functionality supports it, you could use gdb - write to patch object files using this technique. Note that gdb can neither interpret nor modify relocations in this case, so branches and some initialized variables will appear to go to the wrong place. But this feature is still handy from time to time. file file with no argument makes gdb discard any information it has on both executable file and the symbol table. exec-file filename Specify that the program to be run (but not the symbol table) is found in filename. gdb searches the environment variable PATH if necessary to locate your program. Omitting filename means to discard information on the executable file. symbol-file filename Read symbol table information from file filename. PATH is searched when necessary. Use the file command to get both symbol table and program to run from the same file. symbol-file with no argument clears out gdb information on your programs symbol table. The symbol-file command causes gdb to forget the contents of some breakpoints and auto-display expressions. This is because they may contain pointers to the internal data recording symbols and data types, which are part of the old symbol table data being discarded inside gdb. symbol-file does not repeat if you press ltRETgt again after executing it once. When gdb is configured for a particular environment, it understands debugging information in whatever format is the standard generated for that environment you may use either a gnu compiler, or other compilers that adhere to the local conventions. Best results are usually obtained from gnu compilers for example, using gcc you can generate debugging information for optimized code. For most kinds of object files, with the exception of old SVR3 systems using COFF, the symbol-file command does not normally read the symbol table in full right away. Instead, it scans the symbol table quickly to find which source files and which symbols are present. The details are read later, one source file at a time, as they are needed. The purpose of this two-stage reading strategy is to make gdb start up faster. For the most part, it is invisible except for occasional pauses while the symbol table details for a particular source file are being read. (The set verbose command can turn these pauses into messages if desired. See Optional Warnings and Messages .) We have not implemented the two-stage strategy for COFF yet. When the symbol table is stored in COFF format, symbol-file reads the symbol table data in full right away. Note that ldquostabs-in-COFFrdquo still does the two-stage strategy, since the debug info is actually in stabs format. symbol-file - readnow filename file - readnow filename You can override the gdb two-stage strategy for reading symbol tables by using the lsquo - readnow rsquo option with any of the commands that load symbol table information, if you want to be sure gdb has the entire symbol table available. core-file filename core Specify the whereabouts of a core dump file to be used as the ldquocontents of memoryrdquo. Traditionally, core files contain only some parts of the address space of the process that generated them gdb can access the executable file itself for other parts. core-file with no argument specifies that no core file is to be used. Note that the core file is ignored when your program is actually running under gdb. So, if you have been running your program and you wish to debug a core file instead, you must kill the subprocess in which the program is running. To do this, use the kill command (see Killing the Child Process ). add-symbol-file filename address add-symbol-file filename address - readnow add-symbol-file filename address - s section address. The add-symbol-file command reads additional symbol table information from the file filename. You would use this command when filename has been dynamically loaded (by some other means) into the program that is running. The address should give the memory address at which the file has been loaded gdb cannot figure this out for itself. You can additionally specify an arbitrary number of lsquo - s section address rsquo pairs, to give an explicit section name and base address for that section. You can specify any address as an expression. The symbol table of the file filename is added to the symbol table originally read with the symbol-file command. You can use the add-symbol-file command any number of times the new symbol data thus read is kept in addition to the old. Changes can be reverted using the command remove-symbol-file. Although filename is typically a shared library file, an executable file, or some other object file which has been fully relocated for loading into a process, you can also load symbolic information from relocatable. o files, as long as: the files symbolic information refers only to linker symbols defined in that file, not to symbols defined by other object files, every section the files symbolic information refers to has actually been loaded into the inferior, as it appears in the file, and you can determine the address at which every section was loaded, and provide these to the add-symbol-file command. Some embedded operating systems, like Sun Chorus and VxWorks, can load relocatable files into an already running program such systems typically make the requirements above easy to meet. However, its important to recognize that many native systems use complex link procedures (.linkonce section factoring and C constructor table assembly, for example) that make the requirements difficult to meet. In general, one cannot assume that using add-symbol-file to read a relocatable object files symbolic information will have the same effect as linking the relocatable object file into the program in the normal way. add-symbol-file does not repeat if you press ltRETgt after using it. remove-symbol-file filename remove-symbol-file - a address Remove a symbol file added via the add-symbol-file command. The file to remove can be identified by its filename or by an address that lies within the boundaries of this symbol file in memory. Example: remove-symbol-file does not repeat if you press ltRETgt after using it. add-symbol-file-from-memory address Load symbols from the given address in a dynamically loaded object file whose image is mapped directly into the inferiors memory. For example, the Linux kernel maps a syscall DSO into each processs address space this DSO provides kernel-specific code for some system calls. The argument can be any expression whose evaluation yields the address of the files shared object file header. For this command to work, you must have used symbol-file or exec-file commands in advance. section section addr The section command changes the base address of the named section of the exec file to addr. This can be used if the exec file does not contain section addresses, (such as in the a. out format), or when the addresses specified in the file itself are wrong. Each section must be changed separately. The info files command, described below, lists all the sections and their addresses. info files info target info files and info target are synonymous both print the current target (see Specifying a Debugging Target ), including the names of the executable and core dump files currently in use by gdb. and the files from which symbols were loaded. The command help target lists all possible targets rather than current ones. maint info sections Another command that can give you extra information about program sections is maint info sections. In addition to the section information displayed by info files. this command displays the flags and file offset of each section in the executable and core dump files. In addition, maint info sections provides the following command options (which may be arbitrarily combined): ALLOBJ Display sections for all loaded object files, including shared libraries. sections Display info only for named sections. section-flags Display info only for sections for which section-flags are true. The section flags that gdb currently knows about are: ALLOC Section will have space allocated in the process when loaded. Set for all sections except those containing debug information. LOAD Section will be loaded from the file into the child process memory. Set for pre-initialized code and data, clear for. bss sections. RELOC Section needs to be relocated before loading. READONLY Section cannot be modified by the child process. CODE Section contains executable code only. DATA Section contains data only (no executable code). ROM Section will reside in ROM. CONSTRUCTOR Section contains data for constructordestructor lists. HASCONTENTS Section is not empty. NEVERLOAD An instruction to the linker to not output the section. COFFSHAREDLIBRARY A notification to the linker that the section contains COFF shared library information. ISCOMMON Section contains common symbols. set trust-readonly-sections on Tell gdb that readonly sections in your object file really are read-only (i. e. that their contents will not change). In that case, gdb can fetch values from these sections out of the object file, rather than from the target program. For some targets (notably embedded ones), this can be a significant enhancement to debugging performance. The default is off. set trust-readonly-sections off Tell gdb not to trust readonly sections. This means that the contents of the section might change while the program is running, and must therefore be fetched from the target when needed. show trust-readonly-sections Show the current setting of trusting readonly sections. All file-specifying commands allow both absolute and relative file names as arguments. gdb always converts the file name to an absolute file name and remembers it that way. gdb supports gnu Linux, MS-Windows, SunOS, DarwinMach-O, SVr4, IBM RS6000 AIX, QNX Neutrino, FDPIC (FR-V), and DSBT (TIC6X) shared libraries. On MS-Windows gdb must be linked with the Expat library to support shared libraries. See Expat. gdb automatically loads symbol definitions from shared libraries when you use the run command, or when you examine a core file. (Before you issue the run command, gdb does not understand references to a function in a shared library, howevermdashunless you are debugging a core file). There are times, however, when you may wish to not automatically load symbol definitions from shared libraries, such as when they are particularly large or there are many of them. To control the automatic loading of shared library symbols, use the commands: set auto-solib-add mode If mode is on. symbols from all shared object libraries will be loaded automatically when the inferior begins execution, you attach to an independently started inferior, or when the dynamic linker informs gdb that a new library has been loaded. If mode is off. symbols must be loaded manually, using the sharedlibrary command. The default value is on. If your program uses lots of shared libraries with debug info that takes large amounts of memory, you can decrease the gdb memory footprint by preventing it from automatically loading the symbols from shared libraries. To that end, type set auto-solib-add off before running the inferior, then load each library whose debug symbols you do need with sharedlibrary regexp. where regexp is a regular expression that matches the libraries whose symbols you want to be loaded. show auto-solib-add Display the current autoloading mode. To explicitly load shared library symbols, use the sharedlibrary command: info share regex info sharedlibrary regex Print the names of the shared libraries which are currently loaded that match regex. If regex is omitted then print all shared libraries that are loaded. info dll regex This is an alias of info sharedlibrary. sharedlibrary regex share regex Load shared object library symbols for files matching a Unix regular expression. As with files loaded automatically, it only loads shared libraries required by your program for a core file or after typing run. If regex is omitted all shared libraries required by your program are loaded. nosharedlibrary Unload all shared object library symbols. This discards all symbols that have been loaded from all shared libraries. Symbols from shared libraries that were loaded by explicit user requests are not discarded. Sometimes you may wish that gdb stops and gives you control when any of shared library events happen. The best way to do this is to use catch load and catch unload (see Set Catchpoints ). gdb also supports the the set stop-on-solib-events command for this. This command exists for historical reasons. It is less useful than setting a catchpoint, because it does not allow for conditions or commands as a catchpoint does. set stop-on-solib-events This command controls whether gdb should give you control when the dynamic linker notifies it about some shared library event. The most common event of interest is loading or unloading of a new shared library. show stop-on-solib-events Show whether gdb stops and gives you control when shared library events happen. Shared libraries are also supported in many cross or remote debugging configurations. gdb needs to have access to the targets libraries this can be accomplished either by providing copies of the libraries on the host system, or by asking gdb to automatically retrieve the libraries from the target. If copies of the target libraries are provided, they need to be the same as the target libraries, although the copies on the target can be stripped as long as the copies on the host are not. For remote debugging, you need to tell gdb where the target libraries are, so that it can load the correct copiesmdashotherwise, it may try to load the hosts libraries. gdb has two variables to specify the search directories for target libraries. set sysroot path Use path as the system root for the program being debugged. Any absolute shared library paths will be prefixed with path many runtime loaders store the absolute paths to the shared library in the target programs memory. When starting processes remotely, and when attaching to already-running processes (local or remote), their executable filenames will be prefixed with path if reported to gdb as absolute by the operating system. If you use set sysroot to find executables and shared libraries, they need to be laid out in the same way that they are on the target, with e. g. a bin. lib and usrlib hierarchy under path. If path starts with the sequence target: and the target system is remote then gdb will retrieve the target binaries from the remote system. This is only supported when using a remote target that supports the remote get command (see Sending files to a remote system ). The part of path following the initial target: (if present) is used as system root prefix on the remote file system. If path starts with the sequence remote: this is converted to the sequence target: by set sysroot 1. If you want to specify a local system root using a directory that happens to be named target: or remote. you need to use some equivalent variant of the name like. target. For targets with an MS-DOS based filesystem, such as MS-Windows and SymbianOS, gdb tries prefixing a few variants of the target absolute file name with path. But first, on Unix hosts, gdb converts all backslash directory separators into forward slashes, because the backslash is not a directory separator on Unix: Then, gdb attempts prefixing the target file name with path. and looks for the resulting file name in the host file system: If that does not find the binary, gdb tries removing the lsquo. rsquo character from the drive spec, both for convenience, and, for the case of the host file system not supporting file names with colons: This makes it possible to have a system root that mirrors a target with more than one drive. مثلا you may want to setup your local copies of the target system shared libraries like so (note lsquo c rsquo vs lsquo z rsquo): and point the system root at pathtosysroot. so that gdb can find the correct copies of both c:sysbinfoo. dll. and z:sysbinbar. dll. If that still does not find the binary, gdb tries removing the whole drive spec from the target file name: This last lookup makes it possible to not care about the drive name, if you dont want or need to. The set solib-absolute-prefix command is an alias for set sysroot. You can set the default system root by using the configure-time lsquo --with-sysroot rsquo option. If the system root is inside gdb s configured binary prefix (set with lsquo --prefix rsquo or lsquo --exec-prefix rsquo), then the default system root will be updated automatically if the installed gdb is moved to a new location. show sysroot Display the current executable and shared library prefix. set solib-search-path path If this variable is set, path is a colon-separated list of directories to search for shared libraries. lsquo solib-search-path rsquo is used after lsquo sysroot rsquo fails to locate the library, or if the path to the library is relative instead of absolute. If you want to use lsquo solib-search-path rsquo instead of lsquo sysroot rsquo, be sure to set lsquo sysroot rsquo to a nonexistent directory to prevent gdb from finding your hosts libraries. lsquo sysroot rsquo is preferred setting it to a nonexistent directory may interfere with automatic loading of shared library symbols. show solib-search-path Display the current shared library search path. set target-file-system-kind kind Set assumed file system kind for target reported file names. Shared library file names as reported by the target system may not make sense as is on the system gdb is running on. For example, when remote debugging a target that has MS-DOS based file system semantics, from a Unix host, the target may be reporting to gdb a list of loaded shared libraries with file names such as c:Windowskernel32.dll. On Unix hosts, theres no concept of drive letters, so the lsquo c: rsquo prefix is not normally understood as indicating an absolute file name, and neither is the backslash normally considered a directory separator character. In that case, the native file system would interpret this whole absolute file name as a relative file name with no directory components. This would make it impossible to point gdb at a copy of the remote targets shared libraries on the host using set sysroot. and impractical with set solib-search-path. Setting target-file-system-kind to dos-based tells gdb to interpret such file names similarly to how the target would, and to map them to file names valid on gdb s native file system semantics. The value of kind can be auto. in addition to one of the supported file system kinds. In that case, gdb tries to determine the appropriate file system variant based on the current targets operating system (see Configuring the Current ABI ). The supported file system settings are: unix Instruct gdb to assume the target file system is of Unix kind. Only file names starting the forward slash (lsquo rsquo) character are considered absolute, and the directory separator character is also the forward slash. dos-based Instruct gdb to assume the target file system is DOS based. File names starting with either a forward slash, or a drive letter followed by a colon (e. g. lsquo c: rsquo), are considered absolute, and both the slash (lsquo rsquo) and the backslash (lsquo rsquo) characters are considered directory separators. auto Instruct gdb to use the file system kind associated with the target operating system (see Configuring the Current ABI ). هذا هو الإعداد الافتراضي. When processing file names provided by the user, gdb frequently needs to compare them to the file names recorded in the programs debug info. Normally, gdb compares just the base names of the files as strings, which is reasonably fast even for very large programs. (The base name of a file is the last portion of its name, after stripping all the leading directories.) This shortcut in comparison is based upon the assumption that files cannot have more than one base name. This is usually true, but references to files that use symlinks or similar filesystem facilities violate that assumption. If your program records files using such facilities, or if you provide file names to gdb using symlinks etc. you can set basenames-may-differ to true to instruct gdb to completely canonicalize each pair of file names it needs to compare. This will make file-name comparisons accurate, but at a price of a significant slowdown. set basenames-may-differ Set whether a source file may have multiple base names. show basenames-may-differ Show whether a source file may have multiple base names. 1 Historically the functionality to retrieve binaries from the remote system was provided by prefixing path with remote:GNU GDB Debugger Command Cheat Sheet Compile with the - g option (for most GNU and Intel compilers) which generates added information in the object code so the debugger can match a line of source code with the step of execution. لا تستخدم التوجيه الأمثل التحويل البرمجي مثل - O أو - O2 الذي يعيد ترتيب عمليات الحوسبة لكسب السرعة حيث أن إعادة ترتيب هذا لا تتطابق مع ترتيب التنفيذ في التعليمات البرمجية المصدر وأنه قد يكون من المستحيل متابعة. كونترولك: إيقاف التنفيذ. فإنه يمكن إيقاف البرنامج في أي مكان، في المصدر الخاص بك أو مكتبة C أو في أي مكان. لتنفيذ أمر شل: الأمر أو شل الأمر كومباكت غب: استخدام معلومات المفتاح تاب ستكمل بري تاب الأمر الذي يؤدي إلى نقاط توقف المعلومات اضغط تاب مرتين لرؤية جميع الخيارات المتاحة إذا كان هناك أكثر من خيار متاح أو اكتب M - ريتورن. غب اختصار الأوامر: معلومات بري ريتورن ستعمل كما بري هو اختصار صالح لنقاط التوقف دي-ريفيرنسينغ ستل كونتينرز: عرض فئات حاوية ستل باستخدام غب p متغير اسم النتائج في عرض خفي لتعاريف القوالب ومؤشرات. استخدم ما يلي . غبينيت فيل (V1.03 091508). الآن يعمل مع غب 4.3. (الإصدارات المؤرشفة: V1.01 غب 6.4 فقط) بفضل الدكتور المهندس. دان C. مارينيسكو للحصول على إذن لنشر هذا البرنامج النصي. Use the following commands provided by the script:
Comments
Post a Comment