แทนที่จะเป็นgdbtui
หรือctrl+x
ใต้gdb
ซึ่งจะแสดงซอร์สโค้ดที่ด้านบนของหน้าจอฉันต้องการเห็นสิ่งนี้ในโปรแกรมแก้ไข Vim ที่จะข้ามไปมาระหว่างแท็บและบัฟเฟอร์ตามลำดับ
ฉันจะทำสิ่งนี้ได้อย่างไร
แทนที่จะเป็นgdbtui
หรือctrl+x
ใต้gdb
ซึ่งจะแสดงซอร์สโค้ดที่ด้านบนของหน้าจอฉันต้องการเห็นสิ่งนี้ในโปรแกรมแก้ไข Vim ที่จะข้ามไปมาระหว่างแท็บและบัฟเฟอร์ตามลำดับ
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ในบรรดาปลั๊กอินทั้งหมดที่ฉันได้ลองฉันพบว่าConqueGDBเป็นวิธีที่ดีที่สุด ConqueGDB ใช้Conque Shellเพื่อฝังเชลล์แบบโต้ตอบภายในกลุ่มที่ใช้โดย GDB
เวิร์กโฟลว์กับ ConqueGDB ประกอบด้วยการไม่ป้อนคำสั่ง GDB บนเทอร์มินัล GDB คุณใช้ทางลัดบนซอร์สโค้ด vim แต่คุณสามารถใช้พรอมต์ GDB ต่อไปหากต้องการคำสั่งขั้นสูงหรือเลื่อนเพื่อดูเซสชันการแก้ไขข้อบกพร่องทั้งหมด
ตัวอย่างการแม็พดีฟอลต์ของ ConqueGDB ตัวอย่างเช่น:
โปรดสังเกตว่าการใช้เคอร์เซอร์ vim ในการพิมพ์ 'แถวพิมพ์' ของ GDB การดำเนินการปัจจุบันของรหัสอยู่ในอีกบรรทัดหนึ่ง (14) และมีจุดพักบนบรรทัดที่ 10
ในการติดตั้งด้วย Vundle เช่น:
Plugin 'vim-scripts/Conque-GDB'
ฉันใช้ตัวเลือกปลั๊กอินเหล่านี้:
let g:ConqueTerm_Color = 2 " 1: strip color after 200 lines, 2: always with color
let g:ConqueTerm_CloseOnEnd = 1 " close conque when program ends running
let g:ConqueTerm_StartMessages = 0 " display warning messages if conqueTerm is configured incorrectly
leader
หมายความว่าอย่างไร
<leader>r
หมายถึง <kbd> \ </kbd> + <kbd> r </kbd> ในคอมพิวเตอร์ของฉัน คู่มือ Vim มีรายการ::help leader
<Leader>b
เริ่มต้นนี้: มันตั้งเบรกพอยต์ที่ตำแหน่งเคอร์เซอร์ อย่างไรก็ตามมันไม่ใช่การสลับดังนั้นคุณจะไม่สามารถใช้มันเพื่อลบมันได้อีกครั้ง แต่คุณจะต้องเขียน 'ชัดเจน' ในพรอมต์ GDB
คุณมีปลั๊กอินหลายตัวที่รวม gdb ไว้
และยังมีปลั๊กอินที่รวม lldb (จากโครงการ LLVM)
ดูเหมือนว่า Bram ปัจจุบัน (กันยายน 2017) กำลังทำงานเกี่ยวกับการรวมของ gdb จากภายในกลุ่มขอบคุณด้วย:terminal
คุณสมบัติใหม่ ที่จะใช้มันเราต้องโหลดtermdebug
แพ็คเก็ต (มี:packadd termdebug
) แล้วเราจะสามารถที่จะเริ่มต้นคอนโซล gdb :TermDebug (+options)
ในหน้าต่างที่เป็นกลุ่มที่มี IMO เราสามารถพิจารณาให้เป็นอนาคตของการรวม GDB ภายใต้ Vim
edit
คำสั่งGDB
เปิดตัวแก้ไขบนบรรทัดปัจจุบันโดยใช้คำสั่ง:
$EDITOR +<current-line> <current-file>
ค่าเริ่มต้นeditor
คือex
แต่vim
ยังเข้าใจ+<current-line>
รูปแบบ
เมื่อคุณออกจากโปรแกรมแก้ไขคุณจะกลับเข้ามา gdb
มา
สิ่งนี้ช่วยให้คุณสามารถสืบค้นแหล่งข้อมูลได้อย่างอิสระและมีประสิทธิภาพเป็นพิเศษหากคุณมี ctags
การรวมระบบ
นี่คือการรวม gdb กับ vim ในตัวของคนยากจน: สิ่งที่ขาดหายไปหลักคือการตั้งค่าเบรกพอยต์จาก Vim
edit
และศูนย์
edit
ไม่ได้จัดให้มีกลุ่ม Vim อยู่โดยรอบแหล่งที่มาดังนั้นฉันจึงสร้างสคริปต์ Python ขึ้นมา: https://stackoverflow.com/questions/43557405/how-to-open-the-current-file-at-the-current ปัจจุบันสายใน-a-แก้ไขข้อความจากที่ gdb / 43557406 # 43557406
คำสั่งเบรกพอยต์เพื่อช่วยคลิปบอร์ด
คำสั่ง vim นี้คัดลอกตัวระบุจุดพักประเภท:
b <file-path>:<line-number>
ไปที่คลิปบอร์ด:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
จากนั้นคุณสามารถวางลงในนั้น gdb
นั้น
นี่เป็นเสียงเรียกเข้าของคนจนกับการรวม gdb เพื่อความสะดวกในการตั้งค่าเบรกพอยต์
ดูเพิ่มเติมที่: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
แม้ว่าจะไม่เป็นกลุ่มในทางเทคนิค cgdb เป็นคำสาปของ gdb ที่มี keybindings คล้ายเสียงเรียกเข้า มันเป็นดีบักเกอร์ goto ของฉันมานานหลายปี: