vim에서 python 디버깅
python 프로그래밍 - 디버깅 환경 설정
vimspector
vimspector를 사용하면 vim에서 다양한 언어의 프로그램을 디버깅할 수 있다.
Vimspector는 Debug Adapter들에 대한 generic client이다. 실제 debugger와 상호작용 하는 것은 Debug adapters(gadget 또는 adapter라고도 불림)들이다.
따라서 vimspector를 통해 디버깅을 하려면 특정 언어에 대한 gadget을 설치해야 한다.
설치
- pathogen 플러그인 매니저를 사용
$ cd ~/.vim/bundle $ git clone https://github.com/puremourning/vimspector.git - vim의
+python3feature 활성화
Vim을 새로 빌드하거나 빌드된 패키지(플러그인)를 설치해야 한다.$ brew install vim기존의 vim은
/usr/bin/vim에 설치되어있었는데 제거할 수가 없었다.
그래서 위의 명령어로 python3을 지원하는 vim을 설치한 뒤~/.zshrc에 설정을 추가해줬다.alias vim='/opt/homebrew/Cellar/vim/9.0.1400/bin/vim`특정 vim 플러그인들은 vim의
+python3기능이 활성화 되어있어야 한다.
$ vim --version명령어를 통해 해당 기능의 활성화 여부를 알 수 있다.
-python3이라면 비활성화된 상태이다.
install debugpy
순서대로 Python3, Python2를 위한 gadget을 설치하는 vim 명령어이다.
:VimspectorInstall debugpy
:VimspectorInstall debugpy-python2
setting vimspector
vimspector는 .vimspector.json파일을 읽어 초기화된다.
.vimspector.json 파일을 프로젝트의 루트 디렉토리에 추가해준다(full options)
vimspector 설정 자세히 보기
{
"configurations": {
"<name>: Launch": {
"adapter": "debugpy",
"filetypes": [ "python" ],
"configuration": {
"name": "<name>: Launch",
"type": "python",
"request": "launch",
"cwd": "<working directory>",
"python": "/path/to/python/interpreter/to/use",
"stopOnEntry": true,
"console": "externalTerminal",
"debugOptions": [],
"program": "<path to main python file>"
}
}
...
}
}
stdin으로부터 입력받기
.vimspector.json 파일에서 "debugOptions"에 "-i" 옵션을 추가한다.
Key mapping
~/.vimrc에 설정을 추가하여 원하는 키에 디버거의 기능을 맵핑
"============================= Vimspector =============================
" F10 step over, F11 step into, F12 step out
" F5 continue/start, F3 stop, F4 restart
" F9 toggle breakpoint
let g:vimspector_enable_mappings = 'HUMAN'
nnoremap <Leader>dd :call vimspector#Launch()<CR>
nnoremap <Leader>de :call vimspector#Reset()<CR>
nnoremap <Leader>dc :call vimspector#Continue()<CR>
nnoremap <Leader>b :call vimspector#ToggleBreakpoint()<CR>
nnoremap <Leader>B :call vimspector#ClearBreakpoints()<CR>
nmap <Leader>dr <Plug>VimspectorRestart
nmap <Leader>w <Plug>VimspectorStepOut
nmap <Leader>s <Plug>VimspectorStepInto
nmap <Leader>d <Plug>VimspectorStepOver
"============================= Vimspector =============================
<Leader>: \
<CR>: Enter
\dd: debugger 시작(프로그램을 시작)\de: debugger 종료\dc: continue(정지->시작, 다음 breakpoint로 이동)\b: breakpoint 설정/해제\B: 모든 breakpoint 초기화\dr: debugging 다시 시작(restart)\s: step into (bock 내부로 들어감)\w: step out (block을 벗어남)\d: step over(다음 줄 실행)
window size 설정
~/.vimrc
let g:vimspector_sidebar_width = 30
let g:vimspector_bottombar_height = 10
let g:vimspector_code_minwidth = 90
let g:vimspector_terminal_maxwidth = 100
let g:vimspector_terminal_minwidth = 20
before

after
terminal(stdout) window 가로 길이가 늘어났다.

Comments