블로그 이미지
지누구루

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2015. 1. 14. 16:25 공부

정확히 어느 버전부터 가능한지는 잘 모르겠지만,

개인적으로 사용하는 디버깅 기능중에, 꽤 유용하게 사용하고 있는 기능이 있어서 정리해봅니다.

 

원래는 이런 것도 팁이냐, 당연히 다 아는거 아니냐 라고 생각했는데,

더 기본적인 것도 알려주는 글이 있길래... 요것도 한번 남겨 봅니다 ㅎㅎㅎ

 

간단한 코드부터 잠시 보겠습니다.

그냥 VS화면을 캡쳐 했습니다.

 

 

아주 간단한 코드입니다.

testArray 라는 배열을 만들고,

index가 10의 배수인 곳의 값을 10으로 세팅한 다음,

루프를 돌면서 모든 배열의 값을 출력합니다.

 

여기서 잘 보시면 두번째 for문에 마름모 모양의 브레이크 포인트를 볼수 있습니다.

그리고 그 가운데 하얗게 표시가되어 있습니다.

 

해당 위치에 F9로 브레이크 포인트를 건 뒤에

붉은색 원으로 표시되는 부분에 마우스 우클릭을 하면 몇가지 메뉴가 뜹니다.

 

그중에서 여기서 소개할 메뉴는

"적중될 때" 메뉴 입니다.

 

이 메뉴는 해당 브레이크 포인트가 걸릴때,

실행을 멈추지 않고, 해당 메뉴에서 등록된 내용을 출력창에 뿌려주는 기능입니다.

게다가 "조건" 항목과 같이 사용할 수 있기 때문에,

'특정 조건에 걸릴때, 내가 원하는 값을 출력 창에 뿌려라' 라는 명령을 할수 있습니다.

 

위의 브레이브 포인트에 설정된 값은 다음과 같습니다.

 

 

요건 조건값으로 testArray[i]에 0보다 큰 값이 들어 있는 경우에.

 

 

 

testArray Value - i : {i}, value : {testArray[i]}

를 출력해라. 라는 의미입니다.

 

창에 설명이 있지만 어떤 값을 출력하려면 {} 로 감싸서 변수를 지정하면 되고,

그 안에 들어가는 내용은 변수가 아닌 함수 호출이어도 되지만, 리턴값은 존재 해야 합니다.

느낌상으로는 {} 사이에 있는 코드를 evaluate 해서 출력하는 것 같습니다.

(evaluate를 여기서 적절히 뭐라고 한글로 적어야 할지 모르겠어서 걍 evaluate라고 씀)

 

위의 내용을 디버그 모드로 실행하면

출력창에 요렇게 찍힙니다.

 

 

조건에 맞춰서, 출력하려는 값이 출력되는걸 볼 수 있습니다.

위의 예에서는 제가 지워버렸지만,

기본적으로 제공하는 값으로, 어느 함수에서 호출되는지 같은것도 찍어줄 수 있습니다.

 

브레이크를 실제로 걸어서 멈춰버리면 멀티쓰레드 상황에서 디버깅이 너무 어려운 경우라던가,

일정 시간 이상 ping에 응답이 없으면 disconnect 처리를 해놨는데,

디버깅하다가 걸리는 일도 있었고 ...

사실 특정 조건일 때, 몇몇 상태값만 확인하면 되는데, 일일이 멈춰서 단계 따라가는게 귀찮았는데,

마침 같이 일하던 동료가 이 기능을 알려줘서 

아주 유용하게 사용하였고, 그 이후로 지금도 애용하고 있습니다.

 

별거 아닌 팁이지만, 남겨둬 봅니다 ㅎㅎㅎ

 

posted by 지누구루