كيفية تمييز وتلوين إخراج gdb أثناء التصحيح التفاعلي؟

StackOverflow https://stackoverflow.com/questions/209534

  •  03-07-2019
  •  | 
  •  

سؤال

من فضلك لا ترد، يجب أن أستخدم ddd، أو nemiver، أو emacs، أو vim، أو أي واجهة أمامية أخرى، فأنا أفضل gdb كما هو، ولكني أرغب في رؤية مخرجاته مع بعض الألوان الطرفية.

هل كانت مفيدة؟

المحلول

.gdbinit

يمكنك تعديل الخاص بك ~/.gdbinit أن يكون لها ألوان.يمكنك استخدام الجشع .gdbinit وهو متاح هنا:

https://github.com/gdbinit/gdbinit

يمكنك تعديله بقدر ما تريد أيضًا.لقد وجدت هذا بفضل هذه الإجابة SO.إليك نوع الإخراج الذي يمكنك الحصول عليه:

.gdbinit

يتوفر أيضًا مستودع GitHub: https://github.com/gdbinit/Gdbinit

وفي ملاحظة جانبية، كانت نفس الفكرة أيضا تنطبق على lldb.

لوحة تحكم جي دي بي

باتباع نفس المفهوم، لوحة تحكم جي دي بي يوفر واجهة مرئية معيارية لـ GDB في Python.

GDB Dashboard

(بائع متجول غير قانوني

يستخدم مشروع آخر مشابه دعم GDB's Python لتوفير المزيد من القابلية للتوسعة، لذلك يستحق التحقق من ذلك: https://github.com/dholm/voidwalker

@dholm يقدم أيضًا خدماته الخاصة .gdbinit مستوحاة من السابق.

(void)walker

pwndbg

توفر بعض المشاريع مجموعة من الوظائف المفيدة، بما في ذلك العرض المحسن.هذا هو الحال ل بيدا أو pwndbg.هذا الأخير يعطي الوصف التالي:

بديل PEDA.بروح صديقنا الطيب windbg, pwndbg هو واضح pwnd-bag.

  • سرعة
  • المرونة
  • رمز نظيف

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

pwndbg

فولترون

ال مشروع وصف الدول:

Voltron عبارة عن واجهة مستخدم مصحح أخطاء قابلة للتوسيع للمتسللين.يتيح لك إرفاق طرق عرض الأداة المساعدة التي تعمل في محطات أخرى إلى مصحح الأخطاء (LLDB أو GDB) ، وعرض معلومات مفيدة مثل التفكيك ، ومحتويات المكدس ، وقيم التسجيل ، وما إلى ذلك ، مع الاستمرار في منحك نفس مصحح الأخطاء التي اعتدت عليها.

يمكنك تعديل الخاص بك .gdbinit لدمجها تلقائيا.ومع ذلك، فإن العرض نفسه خارج GDB (على سبيل المثال.في تقسيم tmux).

voltron

مرفق البيئة العالمية

مرفق البيئة العالمية هو خيار آخر، ويتم وصفه على النحو التالي:

يهدف إلى استخدامها في الغالب من قبل المستغلين ومهندسي العكسيين ، لتوفير ميزات إضافية لـ GDB باستخدام Python API للمساعدة أثناء عملية التحليل الديناميكي وتطوير استغلال.

GEF

نصائح أخرى

إنها ليست ألوانًا، ولكن فكر في gdb واجهة المستخدم الرسومية النص.إنه يحدث فرقًا كبيرًا في مدى قابلية استخدام gdb.

يمكنك إطلاقه باستخدام:

gdb -tui executable.out

لقطة شاشة:

enter image description here

كما ترون، الميزات الرئيسية هي:

  • يُظهر خط المصدر الذي نحن فيه والخطوط المحيطة به
  • يظهر نقاط التوقف

وأنا أعلم أنك لا تريد الواجهة. ولكن ماذا عن cgdb أنها قريبة جدا إلى جدب، فمن TEXTMODE ولكن لديه نافذة مصدر أعلاه مع تسليط الضوء على تركيب على التعليمات البرمجية.

من الممكن تحسين مظهر gdb بشكل كبير من خلال استخدام الألوان.ويتم ذلك عبر أي من الطرق التالية:

  1. المطالبة الملونة عبر "تعيين المطالبة".على سبيل المثال، اجعل المطالبة غامقة وحمراء:

    set prompt \033[1;31m(gdb) \033[m

    أو اجعل المطالبة ذات شكل جديد، غامق وأحمر:

    set prompt \033[01;31m\n\n#####################################> \033[0m

    enter image description here

  2. الأوامر الملونة عبر الخطافات

  3. تسليط الضوء على بناء الجملة الملون لأمر "القائمة".

جميع الأمثلة متاحة في منشورات المدونة التالية التي كتبها مايكل كيليهر:

“تجميل GDB”، 12 مايو 2010 (عبر archive.org)

"تسليط الضوء على بناء جملة GDB التجريبي"، 15 مايو 2010 (عبر archive.org)

#into .gdbinit
shell mkfifo /tmp/colorPipe

define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-disassemble
hookpost-list
end 

define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-list
set logging off 
set logging redirect off 
shell sleep 0.1s
end 

define hook-quit
shell rm /tmp/colorPipe
end 

define re
hookpost-disassemble
echo \033[0m
end 
document re
Restore colorscheme
end 

تحذير: عربات التي تجرها الدواب. أي دعم TUI، "وضع المستخدم" الإختراق.

والعثور على الجزء href="http://bluec0re.blogspot.com/2011/05/gdb-disassembly-syntax-highlighting-cpp.html" هنا وتعديله قليلا. يحتاج الضوء، ج ++ FILT. إذا تحصل على افسدت الألوان يصل قضية إعادة الأوامر.

وcgdb هو أفضل بكثير من gdb -tui

وأنيق، أنا فقط وجدت هذا الإختراق باستخدام colout: الشبكي: / /github.com/nojhan/colout/blob/master/colout/example.gdbinit

وكنت أرغب في تسليط الضوء على ما يلي: التأكيد على خطوط تتبع مكدس التي تنتمي إلى ملفات مصدر بلدي (بدلا من المكتبات)

.

وكان الحل لاستخدام GDB-الثعبان (على MSYS.؟ على لينكس عادة gdb يأتي مع بيثون المدمج في بالفعل)، وربط backtrace، استخدم

python stack_trace = gdb.execute('backtrace', False, True')

وبعد عملية stack_trace مع regexes بايثون، وطباعتها. وتتحقق جريئة وغيرها من الألوان من خلال وظيفة مثل هذا:

def term_style(*v):
    """1 is bold, 30--37 are the 8 colours, but specifying bold may also
    change the colour. 40--47 are background colours."""
    return '\x1B['+';'.join(map(str, v))+'m'

#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)

ويعطى مزيج جيد آخر من الألوان من خلال هذا التكوين . فإنه يجعل يتفقد backtraces أسهل كثيرا. لاستخدامها، فقط حفظ هذا الملف كما ~/.gdbinit وتشغيل جدب عادة

الجديد في القادم جي دي بي 8.3!

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS

يتوفر الآن التصميم الطرفي لـ CLI وTUI.بالإضافة إلى ذلك ، يمكن استخدام تسليط الضوء على مصدر GNU لتوفير تصميم قصاصات شفرة المصدر.راجع أوامر "ضبط النمط" أدناه لمزيد من المعلومات.

screenshot of gdb 8.2.91.20190401-23.fc30

ويمكنك الحصول على كل ما الألوان التي تريدها؛

# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top