Zamiast gdbtui
lub ctrl+x
pod gdb
któ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 gdbtui
lub ctrl+x
pod gdb
któ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
leader
znaczy
<leader>r
oznacza <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 :terminal
funkcji. Aby go użyć, musimy załadować termdebug
pakiet (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.
edit
Polecenie GDB
Otwiera edytor w bieżącym wierszu za pomocą polecenia:
$EDITOR +<current-line> <current-file>
Domyślnie editor
jest ex
, ale vim
takż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 ctags
integrację.
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
edit
domyś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: