Zamiast gdbtuilub ctrl+xpod gdbktórym pokazuje kod źródłowy na górze ekranu, chciałbym zobaczyć to w moim edytorze Vima, który przeskakiwałby między kartami i buforami odpowiednio.
Jak mogę to zrobić?
Zamiast gdbtuilub ctrl+xpod gdbktórym pokazuje kod źródłowy na górze ekranu, chciałbym zobaczyć to w moim edytorze Vima, który przeskakiwałby między kartami i buforami odpowiednio.
Jak mogę to zrobić?
Odpowiedzi:
Spośród wszystkich wtyczek, które wypróbowałem, ConqueGDB jest najlepszym podejściem. ConqueGDB używa Conque Shell do osadzenia interaktywnej powłoki w vimie, używanej przez GDB.
Przepływ pracy z ConqueGDB nie polega na wpisywaniu poleceń GDB na terminalu GDB, używasz skrótów na kodzie źródłowym vim. Możesz jednak nadal używać wiersza polecenia GDB, aby uzyskać bardziej zaawansowane polecenia, lub przewinąć, aby wyświetlić całą sesję debugowania.
Niektóre domyślne odwzorowania ConqueGDB, na przykład:
Zauważ, jak linia kursora vima została użyta do wydania „wiersza wydruku” GDB, bieżące wykonanie kodu znajduje się w innej linii (14), aw linii 10 jest punkt przerwania.

Aby na przykład zainstalować za pomocą Vundle:
Plugin 'vim-scripts/Conque-GDB'
Korzystam z tych opcji wtyczek:
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
leaderznaczy
<leader>roznacza <kbd> \ </kbd> + <kbd> r </kbd> na moich komputerach. Podręcznik Vima ma na to wpis::help leader
<Leader>b. Ustawia punkt przerwania w pozycji kursora. Jednak NIE jest to przełącznik, więc nie można go użyć do ponownego usunięcia. Zamiast tego będziesz musiał napisać „wyczyść” w wierszu polecenia GDB.
Masz kilka wtyczek, które integrują gdb.
Jest też wtyczka, która integruje lldb (z projektu LLVM)
Wygląda na to, że Bram obecnie (wrzesień 2017 r.) Pracuje nad integracją gdb z poziomu vima dzięki nowej :terminalfunkcji. Aby go użyć, musimy załadować termdebugpakiet (za pomocą :packadd termdebug), a następnie będziemy mogli uruchomić konsolę gdb w oknie vim za pomocą :TermDebug (+options). IMO możemy uznać za przyszłość integracji GDB w ramach Vima.
editPolecenie GDB
Otwiera edytor w bieżącym wierszu za pomocą polecenia:
$EDITOR +<current-line> <current-file>
Domyślnie editorjest ex, ale vimtakże rozumie +<current-line>format.
Po wyjściu z edytora wracasz do gdb.
Pozwala to na swobodne przeglądanie źródła i jest szczególnie wydajne, jeśli masz ctagsintegrację.
Jest to wbudowana w gdb integracja z vimem przez biedaka: główną brakującą rzeczą jest ustalenie punktów przerwania z Vima.
edit i centrum
editdomyślnie nie wyśrodkowuje Vima wokół źródła, więc stworzyłem skrypt Pythona, który to robi: https://stackoverflow.com/questions/43557405/how-to-open-the-current-file-at-the- current-line-in-a-text-editor-from-gdb / 43557406 # 43557406
Polecenie Breakpoint dla pomocnika schowka
Ta komenda vim kopiuje specyfikator punktu przerwania typu:
b <file-path>:<line-number>
do schowka:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Następnie możesz po prostu wkleić to w gdb.
Jest to wizja biedaka do integracji z gdb, aby ułatwić ustawianie punktów przerwania.
Zobacz także: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
Chociaż nie jest to technicznie vim. cgdb to przeklęta wersja gdb z podobnymi do vimów skrótami klawiszowymi. To był mój debugger goto od lat: