레이블이 Pycharm인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Pycharm인 게시물을 표시합니다. 모든 게시물 표시

2021-01-05

PyCharm 디버거 기능(Step Over, Step Into, Step Into My Code)

 

 

(출처: JetBrains)

 

0.     PyCharm에서 디버깅을 할 필요성

간혹 코딩을 하다가 보면 한 줄씩 차례대로 실행시키고 싶을 때가 있다. 이를 Stepping이라고 하는데, PyCharm에서는 디버깅 툴을 통해 단계별로 코드를 실행시킬 수 있다.

해당 코드에서 더 깊숙이 들어가고 싶을 때도 있고, 관심이 별로 없는 코드라서 빠르게 훑고 싶을 때도 있다. 이렇게 상황에 따라 다른 조작을 지원하고 있으므로 프로그래머가 필요에 따라 선택할 수 있어 매우 편리하다.

 

1.     버튼 및 의미

A. Step Over (F8)

Step Over는 코드의 현재 라인에서 그 다음 라인으로 이동한다. 하이라이트 표시된 라인이 메서드를 호출하고 있다 하더라도 다음 줄로 넘어가게 된다. 호출되고 있는 메서드는 내부적으로 실행된다.

다만, 내부적으로 실행되는 메서드라 하더라도 해당 메서드에 breakpoints가 존재할 경우, 디버거는 해당 위치에서 정지하게 된다. 메서드에 breakpoints가 있더라도 강제로 skip하고 싶은 경우엔 Force Step Over를 사용하면 된다.

 

B. Step Into (F7)

Step Into는 메서드 내에서 무슨 일이 일어나고 있는지를 보여준다. 호출한 메서드가 올바른 결과를 반환하고 있는지 확신할 수 없을 때에 이 기능을 사용해서 메서드 내부를 관찰할 수 있다.

만약 여러 개의 메서드가 한 번에 호출되고 있다면 PyCharm은 당신에게 어느 메서드로 들어갈 것인지를 물어보게 된다. 이 기능을 Smart Step Into라고 부른다고 한다. Smart Step Into는 메서드 다중호출 시에 기본적으로 사용하도록 되어있지만, 이 기능을 끄고 싶다면 Settings/Preferences – Build, Execution, Deployment – Debugger – Stepping에 들어가서 Always do smart step into를 체크 해제한다. 이 설정창에서는 Step Into 시에 skip할 목록들도 원하는 대로 관리할 수 있다. 또한 라이브러리 스크립트는 skip하고 싶을 땐 Do not step into library scripts에 체크하면 된다.

 

C. Step Into My Code (Alt+Shift+F7)

나의 코드에 집중하고 싶을 때, 라이브러리 클래스로는 stepping하지 않고 Step Into를 수행하는 기능이다.

 

D. Force Step Into (Alt+Shift+F7)

일반적인 Step Into에서는 skip되어야 했을 메서드에 강제로 진입한다.

 

E.  Step Out (Shift+F8)

메서드를 호출하던 바깥 코드로 빠져나온다.

 

F.  Run to Cursor (Ctrl+Alt+F9)

커서 깜빡이가 위치한 곳까지 실행을 진행시킨다. 중간에 breakpoints를 만나더라도 모두 무시된다.

 


2019-10-22

내가 사용하는 PyCharm Live Template

0. 파이참에는 라이브 템플릿(Live Template)이라는 기능이 있다.

잘 활용하면 코딩을 한결 편리하게 할 수 있다보니

즐겨 사용하게 되는 기능 중 하나이다.



1. 기존에 추가되어 있는 템플릿은 아래와 같다.

(이미 추가되어 있는 나의 템플릿)

2. 이 중에서 내가 추가한 것은

open, printer, sur이다.

각각의 Template text는 다음과 같다.

open :
with open('$name$', '$mode$', encoding='utf-8') as $as$:
    $as$.
open 함수를 더 쉽게 이용할 수 있게 해준다.

printer:
print($SELECTION$)
선택된 블록을 print() 함수 안에 넣어준다. (해당 변수를 출력하고 싶을 때 사용함)

sur :
$with$($SELECTION$)
선택된 블록을 어떤 함수로 감쌀지 입력해줄 수 있다. (float()이나 int()로 감쌀 때 사용함)

main :

if __name__ == '__main__':
    $END$
if __name__ == "__main__" 구문을 자동완성해준다.



3. 사용법은 이렇다.

("op"까지 입력한 상태)

open이라는 built-in 함수가 있다보니 내가 추가한 템플릿과 함께 뜨는 것을 볼 수 있다.

여기에서 위의 open을 선택하면 평범한 자동완성이 되지만

맨 아래의 open을 선택하면 다음과 같이 템플릿이 생성된다

()

이 상태에서 입력하면 open 함수의 첫 번째 파라미터($name$)에 값을 입력할 수 있고

Tab키를 누르면 다음 파라미터($mode$)를 입력할 수 있다.

'이미 추가되어있는 나의 템플릿' 사진의 OK 버튼 위에 옵션을 보면

Tab키 대신에 어떤 키로 확장시킬 것인지도 선택할 수 있다.

사용자가 라이브 템플릿을 추가 및 수정할 수 있으니 매우 편리하다.



4. 단축키는 Ctrl + Alt + T 이다.

(커서를 대거나 블록설정한 뒤 단축키를 입력한 모습)

해당 hotkey를 입력하면 'Surround With'이라는 윈도우가 뜨게 된다.

간편하게 숫자 1부터 0까지, 그리고 a 키를 눌러서

기본적으로 탑재되어 있는 라이브 템플릿을 이용해볼 수도 있으며

p, s, q를 눌러서 내가 만든 라이브 템플릿을 사용할 수도 있다.

이제 블록 설정 후 Ctrl + X(잘라내기)는 그만.

스마트하게 라이브 템플릿을 활용해보자.



5. 추가 내용은 홈페이지에서 확인할 수 있다.

2018-10-19

Pycharm에서 자주 쓰는 단축키들

Tab : 문장을 지정해둔 상태로 tab 키를 누르면 해당 문장을 들여쓰기함.
Shift + Tab : tab으로 들여쓰기한 문단을 다시 한 수준 아래로 내릴 때 사용.

Shift + Enter : Jupyter notebook에서 해당 라인을 실행한 후 다음 라인을 생성
Ctrl + Enter : 해당 라인만 실행시킴. 다음 라인을 생성하지 않음.
2019.1 버전부터 파이참 내의 주피터 노트북 사용이 유료로 전환됨.

Esc : 해당 라인을 수정하다가 esc 키를 누르면 수정 상태를 빠져나와 라인별 이동 가능
방향키 위, 아래 : 라인별로 이동 가능.
Enter : 라인별로 이동하다가 Enter를 누르면 해당 라인을 수정하러 들어갈 수 있음.

Shift + F6 : 해당 변수의 이름을 모든 위치에서 한 번에 변경할 수 있다.

Ctrl + Q : 해당 함수의 quick documentation을 볼 수 있다.

(커서가 메서드를 가리킬 때)
Ctrl + Q : Quick Documentation
Ctrl + Shift + Space : 매개 변수 정보
Ctrl + P : 현재 함수(혹은 메서드)의 파라미터 목록
F12 : 메서드 정의로 이동
Ctrl + w : 구역 설정

(Regular Expression 사용시)
Alt + Enter : Match되는 문자열을 테스트해볼 수 있다.

Alt + 7 : 변수의 사용처를 추적할 수 있다.

Ctrl + B : 해당 문서로 빠르게 이동.