Thay vì gdbtui
hoặc ctrl+x
dưới gdb
đó hiển thị mã nguồn ở trên cùng của màn hình, tôi muốn thấy điều này trong trình soạn thảo Vim của tôi sẽ nhảy giữa các tab và bộ đệm tương ứng.
Tôi có thể làm cái này như thế nào?
Thay vì gdbtui
hoặc ctrl+x
dưới gdb
đó hiển thị mã nguồn ở trên cùng của màn hình, tôi muốn thấy điều này trong trình soạn thảo Vim của tôi sẽ nhảy giữa các tab và bộ đệm tương ứng.
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Trong số tất cả các plugin tôi đã thử, tôi thấy ConqueGDB là cách tiếp cận tốt nhất. ConqueGDB sử dụng Conque Shell để nhúng một lớp vỏ tương tác bên trong vim, được sử dụng bởi GDB.
Quy trình làm việc với ConqueGDB bao gồm không nhập các lệnh GDB trên thiết bị đầu cuối GDB, bạn sử dụng các phím tắt trên mã nguồn vim. Nhưng bạn có thể tiếp tục sử dụng lời nhắc GDB nếu bạn muốn, cho các lệnh nâng cao hơn hoặc cuộn để xem toàn bộ phiên gỡ lỗi.
Một số ánh xạ mặc định của ConqueGDB, ví dụ:
Lưu ý cách dòng con trỏ vim đã được sử dụng để phát hành 'hàng in' GDB, việc thực thi mã hiện tại nằm ở một dòng khác (14) và có một điểm dừng trên dòng 10.
Để cài đặt với Vundle chẳng hạn:
Plugin 'vim-scripts/Conque-GDB'
Tôi sử dụng các tùy chọn plugin này:
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
nghĩa là gì
<leader>r
có nghĩa là <kbd> \ </ kbd> + <kbd> r </ kbd> trên máy tính của tôi. Hướng dẫn sử dụng Vim có một mục cho nó::help leader
<Leader>b
. Nó đặt một điểm dừng ở vị trí con trỏ. Tuy nhiên, nó KHÔNG phải là một sự thay đổi, vì vậy bạn không thể sử dụng nó để loại bỏ nó một lần nữa. Thay vào đó, bạn sẽ phải viết 'xóa' trên dấu nhắc GDB.
Bạn có một số plugin tích hợp gdb.
Và cũng có một plugin tích hợp lldb (từ dự án LLVM)
Có vẻ như Bram hiện (tháng 9 năm 2017) đang làm việc về việc tích hợp gdb từ bên trong vim nhờ :terminal
tính năng mới . Để sử dụng nó, chúng ta cần tải termdebug
gói (với :packadd termdebug
), sau đó chúng ta sẽ có thể bắt đầu bảng điều khiển gdb trong cửa sổ vim với :TermDebug (+options)
. IMO, chúng ta có thể coi đó là tương lai của hội nhập GDB theo Vim.
edit
Lệnh GDB
Mở trình soạn thảo trên dòng hiện tại bằng lệnh:
$EDITOR +<current-line> <current-file>
Mặc định editor
là ex
, nhưng vim
cũng hiểu +<current-line>
định dạng.
Khi bạn thoát khỏi trình soạn thảo, bạn sẽ quay lại gdb
.
Điều này cho phép bạn duyệt nguồn một cách tự do và đặc biệt mạnh mẽ nếu bạn có ctags
tích hợp.
Đây là một cách tích hợp gdb một chiều của một người nghèo để tích hợp vim: điều còn thiếu chính là thiết lập các điểm dừng từ Vim.
edit
và trung tâm
edit
không tập trung vào Vim theo mặc định xung quanh nguồn, vì vậy tôi đã tạo một tập lệnh Python thực hiện nó: https://stackoverflow.com/questions/43557405/how-to-open-the-cản-file-at-the- current-line-in-a-text-Editor-from-gdb / 43557406 # 43557406
Lệnh Breakpoint để trợ giúp clipboard
Lệnh vim này sao chép một công cụ xác định điểm dừng loại:
b <file-path>:<line-number>
vào bảng tạm:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Sau đó, bạn có thể chỉ cần dán nó vào gdb
.
Đây là sự tích hợp vim to gdb của một người nghèo để dễ dàng thiết lập các điểm dừng.
Xem thêm: https://stackoverflow.com/questions353366/do-you-debug-c-code-in-vim-how
Mặc dù không phải kỹ thuật vim. cgdb là một phiên bản nguyền rủa của gdb với các phím bấm giống như vim. Đó là trình gỡ lỗi goto của tôi trong nhiều năm: