조건부 브레이크포인트로 조사 시간 최소화#
- 조건부 브레이크포인트: 특정한 조건을 만족할 경우에만 코드 라인에서 앱 실행을 중단시키는 방법이다.
- 조건부 브레이크포인트를 잘 활용하면 조사하려는 특정한 케이스를 찾아 헤매지 않고 소중한 시간을 절약할 수 있다.
- 단점: 조건부 브레이크포인트는 스코프에 있는 변숫값을 디버거가 지속적으로 가로채서 브레이크포인트 조건을 평가해야 하므로 실행 성능에 상당히 큰 영향을 미친다.
- 조건부 브레이크포인트의 또 다른 용도는 여러 가지 표현식 값 또는 특정 조건에 대한 스택 트레이스 등의 세부 정보를 기록하는 것이다.
실행을 중단시키지 않고도 브레이크포인트를 사용하는 방법#
- 브레이크포인트를 사용하면 차후 코드를 조사할 때 유용하게 쓰일 메시지를 남길 수 있다.


조사 시나리오를 동적으로 변경하기#
- 디버깅 도중에 스코프 안에 있는 변숫값을 변경하는 식으로 코드 조사를 할 수 있다.
- 다음과 같은 경우에는 변숫값을 변경하는 식으로 코드 조사할 수 있다.
- 조사하려는 시나리오를 구동시키는 데 필요한 데이터가 없다.
- 코드를 실행하는 데 너무 오래 걸린다.
- 다음과 같은 경에는 변숫값 변경대신 조건부 브레이크포인트를 사용하는 것이 좋다.
- 조사하려는 시나리오를 구동시키는 데 필요한 데이터를 갖고 있다.
- 조사 중인 코드의 실행 시간이 그리 길지 않다.
- 변숫값을 두어 개 정도만 바꿔서 해결 가능한 경우에는 변숫값을 그때그때 바꾸는 것이 훌륭한 방법이겠지만, 변경 범위가 늘어나면 시나리오가 점점 복잡해져 관리하기가 어려워진다.
조사 케이스를 되감기#
- 디버거로 코드를 조사하면서 ‘시간을 되돌리는’ 이런 접근 방식을 실행 프레임 드로핑(execution frame dropping) 또는 실행 프레임 퀴팅(execution frame quitting)이라고 한다.
- 실행 프레임을 드롭한다는 것은, 실행 스택 트레이스에서 한 레이어 뒤로 간다는 뜻이다.
- 프레임 드롭과 스텝 아웃은 둘 다 겉보기엔 현재 조사 플랜이 닫히고 메서드가 호출된 위치로 실행이 돌아가기 때문에 혼동하는 개발자가 많다.
- 스텝 아웃의 경우 메서드가 리턴되거나 예외가 발생할 때까지 현재 플랜 내에서 실행이 계속된다.
- 실행 프레임 드롭은 메서드가 호출괴기 이전의 조사 플랜으로 돌아간다.
- 따라서 스템 아웃은 빨리 감기라면 실행 프레임 드로핑은 되감기인 셈이다.
- 앱 내부 메모리 밖에서 값을 변경하는 컨맨드를 실행하면 프레임을 드롭해도 해당 변경분을 되돌릴 수 없음을 유념하기 바란다.
- DB에 있는 데이터를 수정한다.
- 파일 시스템을 변경한다.
- 다른 앱을 호출하여 해당 앱의 데이터를 변경한다.
- 다른 앱이 읽은 큐에 메시지를 추가해서 해당 앱의 데이터를 변경한다.
- 이메일 메시지를 전송한다.
- 따라서 이 방법을 사용하려고 작정했다면 가능한 한 큰 코드 조각의 반복 실행은 삼가고, 외부 변경을 일으키는 로직의 포함 여를 꼼꼼히 확인하는 것이 좋다.
comments powered by