컴퓨터로 작업을 하다보면, 종종 이유를 알 수 없는 문제가 발생하곤 한다. 그럼 그때부터 내가 뭘 하고 있는지 알 수 없고, 해결이 되어도 왜 해결이 되었는지 알 수 없는 시간이 연이어 발생한다. 컴퓨터한테 물어본다고 답을 주는 것도 아니고......ㅎ
특히 프로그래밍에서 그런 '버그'가 발생하면, 말 그대로 정말 답답해진다고 한다.
그리고 랩뷰에서 그런 순간이 바로, 위 그림의 빨간 화살표가 가리키는 것 처럼 끊어진 실행 버튼을 마주하게 되는 순간이다. 회로가 끊어져서 실행할 수 없다, 다시 말해 버그가 발견되었다는 의미이다. 여기서 끊어진 실행버튼을 누르면, 친절하게도 어떤 부분에서 에러가 발생했는지를 알 수 있는 '에러리스트'가 나타난다. 에러리스트 목록의 에러를 더블클릭하면 에러가 발생한 부분을 구체적으로 표시해주니, 이것을 참고해서 에러를 수정하면 된다.
(**계산결과가 무한대가 나오거나(Inf), 음수제곱근과 같은 실수가 아닌 수치(NaN)가 나올 경우에는 인디케이터에 수치 데이터값 대신, Inf, NaN이라는 데이터가 표시된다.)
이러한 버그를 찾아 수정하거나 에러를 피하는 과정을 디버깅[debugging]이라고 부르는데, 아래에서 랩뷰에서 디버깅을 도와주는 장치들을 소개한다.
1.실행하이라이트
(데이터 흐름의 확인)
전구 아이콘으로 표시되는 '실행하이라이트'는 전체 데이터의 흐름을 확인하는 기능을 제공한다. 전구에 불이 들어와 있다면 사용중, 꺼져있다면 비사용중이라는 의미이다. 실행하이라이트를 사용하는 상태에서 실행버튼을 누르면, 우측의 그림처럼 각 단계의 입/출력값이 천천히 차례로 표시되어, 어디에서 잘못된 값이 발생하였는지 확인할 수 있다. 2.브레이크 포인트 실행하이라이트가 천천히 값을 표시해준다고 하지만, 실제로 사용해보면 노출된 값을 미처 확인하기도 전에 다음 단계의 값이 노출되어버리는 경우가 많다. 이때 함께 사용하면 좋은 기능이 이어서 소개할 '브레이트 포인트'이다.
브레이트 포인트란, 프로그램을 실행 도중에 일시정지 시켜주는 기능이다. 잠시 멈추어 가길 원하는 지점의 와이어 또는 노드에서 우클릭하여 해당 기능을 사용할 수 있다. 브레이크 포인트가 설정된 지점은 위의 그림처럼 빨간색으로 표시되며, 브레이크 포인트를 설정해둔 상태에서 잠시 이용을 원하지 않을 경우에는 '불활성화'가 가능하다.
실행하이라이트와 브레이크 포인트를 함께 사용한 그림이다. 각각 첫번째, 두번째 브레이크 포인트에서 일시정지된 모습을 캡쳐한 것으로, 그림에서는 검정색 박스로만 표시되었지만 실제 화면에서는 동작이 멈춘 포인트의 다음 동작 노드에서 검정박스가 깜빡이는 형태로 나타난다. 일시정지를 해제하고 동작을 이어서 진행하고 싶다면, 상단의 붉은색 일시정지 버튼을 눌러주면 된다. 이러한 방식으로 적당한 위치에 브레이크 포인트를 설정, 전체 데이터의 흐름을 확인하면 훨씬 간편하게 원하는 검사가 가능하다. 3.프로브 그런데 매번 이렇게 전체 과정을 다 보고 있을 수는 없다. 작업하는 VI의 크기가 커지면 커질 수록, 시간적 손실이 커지게 되기 때문이다.
이때 사용할 수 있는 기능이 '프로브'인데, 이 기능을 이용하면 원하는 지점에서의 값만 실시간으로 확인할 수 있다. 앞서 소개한 실행하이라이트는 데이터의 확인을 위해 속도를 일부러 늦춰놓은 것으로, 실제 데이터의 흐름은 그것보다 훨씬 빠르게 진행된다. 하지만 프로브는 원하는 지점의 값만 확인하는 것으로 데이터 속도를 늦출 필요가 없어, 실제 속도와 같이 빠르게 진행되는 장점이 있다. 데이터를 확인하고 싶은 지점을 우클릭하여 프로브의 기능을 사용한다. 기능을 실행하면 숫자가 적힌 둥근박스와 프로브 관찰 윈도우가 열린다. 박스의 숫자와 관찰윈도우의 숫자를 매칭하여 값을 확인하면 되며, (그림에는 표시되지 않았으나..) 가장 최근에 그 위치에서 읽혀진 값과 시간이 윈도우에 표시된다.
여기서 주의해야 할 점은 관찰윈도우를 닫음과 동시에 설정해 둔 프로브와 얻었던 관찰값이 모두 삭제가 된다는 것이다. 일단 삭제가 되면 이후 같은 자리에 다시 프로브를 생성한다고 해도, 값이 복구가 되지 않는다. 게다가 실행이 끝난 이후 생성한 프로브는 지난 실행의 값을 읽어낼 수 없으므로, 위와 같은 상황들에서는 다시 VI를 실행하여 새로 값을 얻어야 하는 문제가 있다. 이때 유용하게 사용할 수 있는 기능이 하나 있는데, 바로 '와이어값 유지'이다.
쉽게 설명하자면, 내가 진행했던 실험값을 와이어에 저장해둔다라고 이해할 수 있다. 이 기능을 이용하기 위해서는 당연히 VI를 실행하기 전 '와이어 값 유지'기능을 실행해야 한다. 이 기능을 실행한 후 프로그램을 수행했다면, 프로그램 수행 이후 생성한 프로브에서도 그 위치를 지나간 마지막 데이터를 읽어낼 수 있다. 물론 이 기능을 불활성화함과 동시에 와이어에 저장되어 있던 모든 데이터는 삭제된다.
'LebView' 카테고리의 다른 글
랩뷰 배열 (0) | 2016.03.20 |
---|---|
랩뷰 불리언 데이터, 기계적 동작 (0) | 2016.03.19 |
랩뷰 문자열 데이터 (0) | 2016.03.19 |
랩뷰 숫자형 데이터, 강제변환점 (0) | 2016.03.19 |
Labview 용어정리 (0) | 2016.03.18 |
최근댓글