본문으로 바로가기

[STM32] Watch Expression...

category 프로그램 이야기/STM32 2021. 7. 15. 15:06
728x90
반응형

 프로그램 디버깅 중 변수의 값을 확인하는 것은 매우 중요하다. 어떤 프로그램 IDE든 Watch 창은 존재하는데 비슷하지만 조금씩 다른 점이 있다. 다른 IDE를 사용하다가 STM으로 사용하니 익숙치 않은 부분이 많다.

 STM32CubeIDE는 사실 이클립스와 동일한 환경으로 이 환경은 많은 IDE들이 사용하고 있기도 하다. 내가 너무 옛날 IDE 들만 사용해서 익숙치 않을 뿐이지 뭐 편리할 수도 있겠다.

1. Watch Expression 창에 변수 등록하기

 가장 쉬운 방법은 원하는 변수에 커서를 위치 시키고 오른쪽 마우스키를 눌러 나오는 드롭다운 메뉴에서 'Add Watch Expression...'을 선택하는 것이다. 그러면 'Add Watch Expression' 창이 뜨고 아래 Watch할 변수가 자동으로 들어간다. 'OK'를 하면 바로 확인이 가능하다.

 다른 방법은 'Expression' 창에서 직접 추가하는 방법이다. 창에서 추가하는 아이콘이나 혹은 아래의 Add new expression 부분을 클릭하면 변수를 적을 수 있다. 아님 뭐 창에 빈공간에서 오른쪽 마우스 버튼 클릭해서 똑같은 메뉴 찾으면 된다.

2. Watch Number Format을 바꾸기

 Watch에 있는 값을 볼 때 경우에 따라 10진수, 8진수, 문자, 16진수 등 경우에 따라 혹은 변수에 따라 다르게 봐야할 경우가 있다. 일단 다른 IDE들은 변수 혹은 배열 마다 Format을 쉽게 지정할 수 있는데 STM은 좀 이상하긴하다.

 일단 전체적인 Format을 바꾸는 방법이 있는데 위쪽에 점 세개 버튼을 누르면 'Number Format'이라는 명령이 있고 이걸 눌러서 기본 Value Format을 바꿀 수 있다. 보면 모든 변수 또는 배열이 다 바뀌는 걸 확인 할 수 있다.

 특정 변수만 기본 포맷이 아닌 다른 포맷으로 보고 싶다면 그 변수에 마우스 오른쪽 버튼 누르고 'Number Format' 명령을 실행해서 바꾸면 된다.                           

하지만 문제가 있는게 변수는 이렇게 쉽게 되는데 배열은 잘 안된다. 배열에서 이렇게 하면 배열의 주소값의 Format만 바뀌고 배열값의 Format은 안바뀐다.

 위와 같이 기본이 16진수고 ADC_Value를 10진수로 바꿨는데 ADC_Value 배열 주소만 Format이 바뀌었다. 아래 멤버들의 값을 바꾸려고 하니까 방법이 아래 멤버도 하나의 변수처럼 각각이 변경이 되었다. 결국 shift 누르고 선택하는 기능을 활용해서 필요한 배열 변수를 선택하고 바뀌니 되긴하는데 영 꺼림직하다.

 나만 그런지 몰라도 그냥 배열 통째로 Format을 바꾸면 좋겠는데....흠....잘안되네.....

 그리고 한번 수동으로 선택한 Format은 기본을 다시 바꾼다고 변하지 않는다. 즉 위에 그림처럼 10진수로 바꾸면 기본 포맷을 저상태에서 바꾼다고 기본 포맷을 쫓아가지 않는다.

 메뉴의 마지막에 'Restore To Preference'를 선택해야 기본 포맷과 같이 따라가니 참고하기 바란다.

728x90
반응형