개발자라면 디버거 사용법은 꼭 알아야 합니다! (To develop scripts, you must know how to use the debugger!)

5

NGM RPA

목록 보기
3/3
post-thumbnail

원본 보기- 엔지엠소프트웨어

안녕하세요. 엔지엠소프트웨어입니다. 게임 또는 업무 자동화를 위한 스크립트를 개발하다보면 예상하지 못한 문제를 만나곤 합니다. 스크립트를 작성했는데 내가 의도한데로 동작하지 않거나 또는 새로운 액션을 추가해서 작성했는데 이게 정상적으로 동작하는지 잘 모를때가 있죠? 또는 어떤 문제가 존재하는데 어느 지점에 어떤 값으로 발생하는지 모를수도 있습니다. 이런 경우에 문제를 해결하려면 어떻게 해야 할까요? 엔지엠 에디터에 있는 디버거를 사용하면 쉽게 문제를 찾고 해결할 수 있습니다. 엔지엠 에디터를 실행하고 보기 메뉴의 "도구 모음 > 디버그"를 체크하세요. 그리고, "출력 정보 > 디버그"도 체크해줍니다. 하단에 디버그창이 표시됩니다.


테스트를 위해 첨부된 "디버그 테스트 1.ngs" 스크립트를 에디터에서 열어줍니다. 이 스크립트는 변수가 5개 있고, 각각의 변수는 아래 값으로 초기화되어 있습니다.

변수1: NGMsoftware (문자열)
변수2: 2021-06-20 오후 2:40 (날짜시간)
변수3: 0.0007 (부동소숫점)
변수4: 100, 100, 700, 400 (직사각형)
변수5: 500, 500 (좌표)

그룹1, 그룹2, 그룹3은 변수의 값을 변경하고 있습니다. 실행중에 변수의 값이 어떻게 변화하는지 테스트하기 위한 용도입니다.

그룹1: http://ngmsoftware.com
그룹2: 2021-06-21 12:00:00
그룹3: 1

F5를 누르면 처음부터 한단계씩 실행하면서 변수의 값을 확인할 수 있습니다. 글로벌 변수로 설정한게 없기 때문에 첫번째 열은 모두 체크되지 않은 상태입니다. F5를 누를때마다 액션이 하나씩 실행되면서 변수가 초기화되면서 메모리에 올라가고, 목록에 추가됩니다. 그룹에서 설정한 변수의 값을 변경하고 있는것도 확인 가능합니다.


만약, 스크립트 내용이 많아서 특정 위치부터 변수의 값을 확인하고 싶으면 어떻게 해야 할까요? 확인하고 싶은 부분을 선택하고 F6을 누르면 해당 영역까지 실행되고 멈추게 됩니다. 여기서부터 F5를 눌러서 하나씩 내용을 확인할 수 있습니다. 아래 동영상은 변수3이 선택된 상태에서 F6을 눌러줬습니다. 스크립트가 변수3까지 실행되고 멈춘 후 F5를 눌러서 한단계씩 변수의 값들을 확인 했습니다.


디버그 영역의 첫번째 버튼은 "선택한 액션부터 스크립트가 실행됩니다. 선택된 액션이 없으면 처음부터 실행됩니다." 설명과 같이 동작하며, 단축키가 없습니다. 스크립트를 구간별로 확인해야 하는 경우 또는 이미 검증된 상단 부분의 스크립트를 건너뛸 때 사용합니다. 스크립트가 길어지면 처음부터 마지막까지 테스트하는데 너무 많은 시간이 소요됩니다. 한번 실행하면 내부에 변수 및 값들이 저장되므로 선택한 부분부터 실행하면서 테스트 할 수 있습니다.


테스트에서 변수의 값에 따라 로직이 분기되어야 한다면 어떻게 해야 할까요? 첨부되어 있는 "디버그 테스트 2.ngs"를 열어줍니다. 이 스크립트는 변수3의 값이 1인지 체크하고, 1과 같으면 아래 동영상과 같이 메시지를 표시합니다. 변수3의 값이 1이 아니라면 다른 메시지를 표시하도록 되어 있습니다. 아래는 정상적인 경우입니다.


만약, 변수3의 값이 1이 아니라면 다른 로직을 정상적으로 수행하는지 확인하고 싶을수가 있습니다. 아래 동영상과 같이 그룹3을 선택하고 F6을 눌러주세요. 그리고, 하단의 변수3의 값을 0으로 변경해줍니다. Ctrl+Alt+F8(실행)을 눌러서 실행해보세요. 정상 케이스와 다르게 실행되는걸 알 수 있습니다.


스크립트가 복잡해질수록 디버깅 기능을 잘 활용하면 개발 시간을 단축하는데 많은 도움이 됩니다. 변수가 아닌 이미지 조건도 디버그 모드에서 실시간으로 확인할 수 있습니다. 첨부되어 있는 "디버그 테스트 3.ngs"를 에디터에서 열어줍니다. 이미지 조건들은 테스트를 위해 대상 이미지가 필요합니다. 아래 그림을 그림판으로 열어주고 좌측 상단에 정렬해주세요.


각각의 점(dot)들을 red.ngi, orange.ngi, blue.ngi로 생성합니다. 아래 동영상은 좀 더 확실한 내용을 보여주기 위해 face.ngi가 추가되어 있습니다.


이미지 디버깅은 원본 이미지와 찾은 이미지를 표시합니다. 우측의 "대상 이미지"에는 결과가 True, False로 나타납니다. RPA나 매크로 또는 현업에서 소프트웨어를 만드는 개발자들도 디버깅을 잘 사용하지 못하는분들이 많습니다. 퍼포먼스 개발자가 되려면 각각의 툴에 맞는 디버깅 기능을 파악하고 숙지하는게 중요합니다. 그리고, 엔지엠 에디터를 비롯한 IDE툴에서 표시해주는 Console log나 Output 정보를 유심히 관찰해야 합니다. 한단계 더 발전한 개발자가 되려면 말이죠^^;

원본 보기- 엔지엠소프트웨어

0개의 댓글