กรุณาอย่าตอบฉันควรใช้ ddd, nemiver, emacs, vim หรือส่วนหน้าอื่น ๆ ฉันชอบ gdb ตามที่เป็นอยู่ แต่ต้องการดูผลลัพธ์ด้วยสีเทอร์มินัล
l
ได้รับการดำเนินการsourceware.org/bugzilla/show_bug.cgi?id=21044ผมก็จะเพิ่มl
ไปยังhook-stop
และป้อน Dev นิพพาน
กรุณาอย่าตอบฉันควรใช้ ddd, nemiver, emacs, vim หรือส่วนหน้าอื่น ๆ ฉันชอบ gdb ตามที่เป็นอยู่ แต่ต้องการดูผลลัพธ์ด้วยสีเทอร์มินัล
l
ได้รับการดำเนินการsourceware.org/bugzilla/show_bug.cgi?id=21044ผมก็จะเพิ่มl
ไปยังhook-stop
และป้อน Dev นิพพาน
คำตอบ:
คุณสามารถปรับแต่ง~/.gdbinit
ให้มีสี คุณสามารถใช้สัตว์เลี้ยงลูกด้วยนม.gdbinit
ซึ่งมีอยู่ที่นี่:
https://github.com/gdbinit/gdbinit
คุณสามารถปรับแต่งได้มากเท่าที่คุณต้องการ ฉันพบสิ่งนี้ต้องขอบคุณคำตอบ SOนี้ นี่คือประเภทของเอาต์พุตที่คุณสามารถรับได้:
ที่เก็บ GitHub ก็มีให้เช่นกัน: https://github.com/gdbinit/Gdbinit
ในบันทึกด้านความคิดเดียวกันก็ถูกนำไปใช้กับ lldbด้วยเช่นกัน
ตามแนวคิดเดียวกันนี้GDB Dashboardจะมีอินเทอร์เฟซแบบแยกส่วนสำหรับ GDB ใน Python
อีกโครงการที่คล้ายกันใช้การสนับสนุน Python ของ GDB เพื่อให้การขยายเพิ่มเติมดังนั้นนี่คือมูลค่าการตรวจสอบ: https://github.com/dholm/voidwalker
@dholm ยังให้บริการ. gdbinitของตัวเองซึ่งได้รับแรงบันดาลใจจากรุ่นก่อนหน้า
บางโครงการมีชุดของฟังก์ชั่นที่มีประโยชน์รวมถึงการแสดงผลที่ดีขึ้น เป็นกรณีนี้สำหรับPedaหรือpwndbg หลังให้คำอธิบายต่อไปนี้:
การเปลี่ยน PEDA ในจิตวิญญาณของเพื่อนที่ดีของเรา
windbg
, ที่เด่นชัดคือpwndbg
pwnd-bag
- ความเร็ว
- ความยืดหยุ่น
- รหัสสะอาด
มันมีคำสั่งเพื่อสนับสนุนการดีบักและใช้ประโยชน์จากการพัฒนาคล้ายกับที่มาจาก PEDA และจอแสดงผลที่ดีกว่า (แม้ว่านี่จะไม่ใช่จุดสนใจหลักของโครงการ) ซอฟต์แวร์ยังอยู่ระหว่างการพัฒนาและยังไม่ได้วางจำหน่ายอย่างถูกต้อง
โครงการคำอธิบายฯ :
Voltron เป็น UI ดีบักเกอร์แบบขยายได้สำหรับแฮกเกอร์ ช่วยให้คุณสามารถแนบมุมมองยูทิลิตี้ที่ทำงานในเทอร์มินัลอื่นไปยังดีบักเกอร์ (LLDB หรือ GDB) ของคุณแสดงข้อมูลที่เป็นประโยชน์เช่นการถอดแยกเนื้อหาสแต็กค่าลงทะเบียน ฯลฯ ขณะที่ยังคงให้ CLI
คุณสามารถแก้ไข.gdbinit
เพื่อรวมเข้ากับมันโดยอัตโนมัติ อย่างไรก็ตามการแสดงผลนั้นอยู่นอก GDB (เช่นในการแยก tmux)
GEFเป็นอีกทางเลือกหนึ่งและอธิบายไว้ดังนี้:
มันมีวัตถุประสงค์ที่จะใช้เป็นส่วนใหญ่โดยผู้ใช้ประโยชน์และวิศวกรย้อนกลับเพื่อให้คุณสมบัติเพิ่มเติมให้กับ GDB โดยใช้ Python API เพื่อช่วยในระหว่างกระบวนการของการวิเคราะห์แบบไดนามิกและการใช้ประโยชน์จากการพัฒนา
set $SHOWCPUREGISTERS = 0
หรือยัง โดยทั่วไปคุณจะมีพารามิเตอร์หลายอย่างที่คุณสามารถตั้งค่าได้และคุณสามารถปรับเปลี่ยนรหัสให้เหมาะกับความต้องการของคุณได้เสมอ
มันไม่ได้เป็นสี แต่พิจารณา gdb ของGUI ข้อความ มันสร้างความแตกต่างอย่างมากกับวิธีการใช้ gdb
คุณสามารถเปิดใช้งานด้วย:
gdb -tui executable.out
ภาพหน้าจอ:
อย่างที่คุณเห็นคุณสมบัติหลักคือ:
ฉันรู้ว่าคุณไม่ต้องการส่วนหน้า แต่วิธีการเกี่ยวกับcgdbมันอยู่ใกล้กับ gdb เป็น textmode แต่มีหน้าต่างแหล่งที่มาด้านบนพร้อมกับเน้นไวยากรณ์ในรหัส
เป็นไปได้ที่จะเพิ่มความสวยงามของ gdb ผ่านการใช้สี ทำได้โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:
Colorized prompt ผ่านทาง "set prompt" เช่นทำให้พร้อมต์เป็นตัวหนาและสีแดง:
set prompt \033[1;31m(gdb) \033[m
หรือทำให้พร้อมต์รูปร่างใหม่ตัวหนาและสีแดง:
set prompt \033[01;31m\n\n#####################################> \033[0m
คำสั่ง colorized ผ่าน hooks
ตัวอย่างทั้งหมดมีให้ที่โพสต์บล็อกต่อไปนี้เขียนโดย Michael Kelleher:
"Beautify GDB" วันที่ 12 พฤษภาคม 2010 (ผ่าน archive.org)
"การเน้นไวยากรณ์ GDB เชิงทดลอง", 15 พฤษภาคม 2010 (ผ่านทาง archive.org)
ใหม่ในGDB 8.3 ที่กำลังจะมาถึง!
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS
เทอร์มินัลจัดแต่งทรงผมมีให้บริการสำหรับ CLI และ TUI GNU Source Highlight สามารถใช้เพิ่มเติมเพื่อจัดแต่งตัวอย่างของซอร์สโค้ดได้ ดูคำสั่ง "set style" ด้านล่างสำหรับข้อมูลเพิ่มเติม
gdb 8.3
medium.com/@simonconnah/ …โปรดทราบว่าเครื่องของคุณต้องมีRAMอย่างน้อย512MBมิฉะนั้นgcc
คอมไพเลอร์จะเริ่มทิ้ง
#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
คำเตือน: Buggy ไม่รองรับ TUI แฮ็ค "โหมดผู้ใช้"
พบส่วนหลักที่นี่ และแก้ไขมันเล็กน้อย ต้องเน้น, c ++ filt หากสีเกิดความสับสนคำสั่งให้ออกคำสั่งใหม่
cgdb
ดีกว่ามาก gdb -tui
เรียบร้อยฉันเพิ่งพบแฮ็คนี้โดยใช้ colout: https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
bash: colout: command not found
เมื่อฉันวิ่งbt f
ฉันต้องการไฮไลต์ดังนี้เน้นบรรทัดของการติดตามสแต็กซึ่งเป็นของไฟล์ต้นฉบับของฉัน (แทนที่จะเป็นไลบรารี)
ทางออกคือการใช้ gdb-python (บน MSYS; บน Linux มักจะgdb
มาพร้อมกับ Python ในตัวแล้ว?), hook backtrace
, use
python stack_trace = gdb.execute('backtrace', False, True')
จากนั้นประมวลผลstack_trace
ด้วย Python 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
และเรียกใช้ gdb ตามปกติ
คุณสามารถรับสีอะไรก็ได้ที่คุณต้องการ
# 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