VSCODE [Debug]

BOJ 등으로 문제를 풀 때 #구현, #시뮬레이션 문제 등을 풀게 되면 디버깅이 필요한 순간이 도래한다.

#eclip 같은 경우는 DebugPerspective View가 있어 간단한 조작을 하면 변수 및 배열 상황을 눈으로 보면서 코드를 실행시킬 수 있다.

하지만 # VSCODE는 다소 raw한 느낌이어서 스스로 사용해야 하는 기분이다.번거롭게도 #expression을 사용하지 않는 한 전역변수의 노출은 되지 않는다.

상기 문제와는 별도로 visited 배열을 비트열로 사용할 때 곤란하다.expression에 T. to Binary String()을 행마다 입력해야 하는 단점이 있다.

그래서 expression을 활용하는 방법을 정리하려고 한다.

요즘 상어 문제를 풀게 되면서 자꾸 틀려서 디버깅을 제대로 하자는 의미로 작성한다.

F5키를 눌러 breackpoint로 걸린 초기화면은 다음과 같다.

제대로 보일지 모르겠지만 Variables 탭을 보면 Local만이 Grouping 되어 있다.

현재 N을 전역변수로 사용하고 있으나 Local 탭에서는 확인할 수 없다.확인하기 위해서는 다음과 같이 입력한다.

이렇게 Watch 탭에서 + 버튼 또는 빈 영역에 더블 클릭하면 입력란이 생성되고, N을 입력하면 해당 변수의 값이 함께 출력된다.

여기까지는 단순하게 쓸 수 있다.배열도 스스로 인덱스 되어 표현해 준다.

그러나 어떤 처리가 필요한 경우 메소드의 반환값을 활용하여 표현할 수도 있다.

실제 코드에서는 자바.util. Array sclass는 사용되지 않는다.그러나 디버깅을 위해 import 해주면 expression에서 위와 같이 사용할 수 있다.

아래는 실제로 사용되지 않아 밑줄이 쳐져 있음을 확인할 수 있다.

visited 배열 사용시 #Bitmask를 활용하여 방문 여부를 처리할 때가 있다.이 경우 to Binary String 메소드를 사용해도 좌우 반전에 0은 끊어져 나오기 때문에 직관적으로 확인하기 어려울 때가 많다.

그래서 메소드를 만들었다.# String Bufferclass에서는 reverse라고 하는 좋은 메소드가 있다.비트마스크 Visited를 사용할 때는 오른쪽부터 채우면서 사용하기 때문에 잘린 0도 채우면서 순서를 뒤집어서 사용하면 편하게 디버깅할 수 있는 환경이 만들어진다.

하지만 이것도 사실 좀 번거롭다.다만 맵이나 visited를 하나 넘기면 배열로 받아오는 게 좋지 않을까 싶다.

때문에 앞으로 디버그ing Class를 따로 정리해 놓고 디버그가 필요한 문제를 풀 때마다 해당 클래스를 한쪽에 생성해 놓고 사용하면 편리할 것 같다.

물론 초기에는 다양한 메소드를 구축해 놓아야 하지만 말이다.

error: Content is protected !!