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의
+python3
feature 활성화
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