102. 난방실만들기4에서 디버깅 질문드립니다
안녕하세요, 잘 수강하고 있습니다!
다름이 아니라, live expression을 통해 디버깅하는것이 아직 익숙치 않아서 과정을 자세히 설명해주시면 감사하겠습니다!
강의 5:40초쯤 부분에서 온도값이 실시간으로 live expression에 표시되고, 45도 보다 낮아질 때 브레이크포인트 걸어두신 t_ON 되는 부분으로 화면이 이동하는 것까지.. 어떻게 설정해야하나요? 중요한 코드디버깅일텐데 아직 체득하지 못하였습니다!!
답변 2
0
안녕하세요!
답변을 정리하다 보니 이제서야 질문을 확인했네요.
너무 너무 늦어서 죄송합니다.
⭐ 가장 중요한 점: Live Expressions에는 전역 변수나 static 변수만 넣을 수 있습니다
main() 안에 선언된
temper처럼 함수 안에서 만든 일반 변수(지역 변수)는 실행 중에 표시되지 않습니다.이유는 Live Expressions가 실행 중에 변수의 메모리 주소를 계속 읽어서 값을 보여주기 때문입니다.
전역 변수와 static 변수는 프로그램이 도는 내내 항상 같은 메모리 위치에 있습니다. 그래서 디버거가 언제든 읽을 수 있습니다.
지역 변수는 함수가 실행될 때만 잠깐 만들어졌다가 함수가 끝나면 사라집니다. 그래서 실행 중에 계속 읽을 수 없습니다.
이 예제에서는
ds18b20.c에 전역으로 선언된temperSensor.Temperature를 사용하시면 됩니다.
1. 디버그 모드로 실행하기
벌레 모양 Debug 버튼을 눌러 디버깅을 시작합니다.
화면이 디버그 화면으로 바뀌고, main() 첫 줄에서 잠깐 멈춥니다.
2. 브레이크포인트 걸기
heaterController.c에서 히터를 켜는 줄(heaterOnOff(ON_t);)을 찾습니다.그 줄 왼쪽의 줄 번호 옆 여백을 더블클릭합니다. 파란 점이 생기면 브레이크포인트가 걸린 것입니다.
3. Live Expressions 창 열기
메뉴에서 Window → Show View → Live Expressions를 선택합니다.
보통 오른쪽 위 Variables, Breakpoints 탭 옆에 생깁니다.
4. 변수 추가하기
Live Expressions 창의 Add new expression을 클릭하고
temperSensor.Temperature를 입력합니다.
5. Resume(F8)으로 실행하기
Resume 버튼을 누르면 프로그램이 돌면서 Live Expressions의 온도 값이 실시간으로 바뀝니다.
온도가 45도보다 낮아져 히터를 켜는 줄이 실행되는 순간, 프로그램이 멈추고 화면이 그 줄로 자동으로 이동합니다.
따로 설정할 것은 없고, 2번처럼 브레이크포인트만 걸어두면 됩니다.
참고
브레이크포인트에서 멈춘 동안에는 Live Expressions 값이 갱신되지 않습니다. 이때는 코드의
temper위에 마우스를 올리거나 Variables 탭에서 그 순간의 값을 볼 수 있습니다.Live Expressions에 값이 안 나오면 Run → Debug Configurations → Debugger 탭에서 Enable live expressions가 체크되어 있는지 확인해 주세요.
다시한번 너무 늦은 답변 죄송합니다. ㅠ_ㅠ
0
안녕하세요, 인프런 AI 인턴입니다. 박중호님!
디버깅 과정이 익숙하지 않으시군요. 임베디드 시스템에서 실시간으로 코드를 디버깅하고 변수 상태를 확인하기 위해 Live Expression을 사용하기도 합니다. 이 과정을 좀 더 자세히 설명드리겠습니다.
디버깅 환경 설정:
- 처음에는 디버깅을 지원하는 환경을 제대로 구성하는 것이 중요합니다. 여러분이 사용하는 개발 툴(예: Keil, STM32CubeIDE 등)에 맞게 디버깅 환경을 설정하세요. 연결된 디바이스가 올바르게 인식되고, 디버깅 세션을 트리거할 수 있는 상태인지 확인하세요.
- 처음에는 디버깅을 지원하는 환경을 제대로 구성하는 것이 중요합니다. 여러분이 사용하는 개발 툴(예: Keil, STM32CubeIDE 등)에 맞게 디버깅 환경을 설정하세요. 연결된 디바이스가 올바르게 인식되고, 디버깅 세션을 트리거할 수 있는 상태인지 확인하세요.
Live Expression 사용하기:
- 개발 환경에서는 변수를 실시간으로 모니터링할 수 있도록 Live Expression 기능을 제공합니다. 디버깅 세션에서 main이나 다른 동작 함수에 브레이크포인트를 설정하고, 디버깅 모드로 실행합니다.
- Live Expression 창에 관심 있는 변수를 추가하면, 코드 실행 중 해당 변수의 실시간 값을 확인할 수 있습니다. 이를 통해 프로그램의 흐름을 더욱 쉽게 이해할 수 있습니다.
- 개발 환경에서는 변수를 실시간으로 모니터링할 수 있도록 Live Expression 기능을 제공합니다. 디버깅 세션에서 main이나 다른 동작 함수에 브레이크포인트를 설정하고, 디버깅 모드로 실행합니다.
브레이크포인트 설정:
- 브레이크포인트는 코드 실행을 특정 지점에서 멈추게 하는 데 사용합니다. 온도 값이 45도 이하일 때 멈추도록 설정하려면, 관련 조건에 브레이크포인트를 설정해 주세요.
- 예를 들어,
if (온도값 < 45)라는 조건을 가진 코드의 라인에 브레이크포인트를 걸어 두시면, 조건이 참이 되는 순간 디버거가 이를 멈추고 해당 시점의 상태를 살펴볼 수 있게 됩니다.
- 브레이크포인트는 코드 실행을 특정 지점에서 멈추게 하는 데 사용합니다. 온도 값이 45도 이하일 때 멈추도록 설정하려면, 관련 조건에 브레이크포인트를 설정해 주세요.
관련 질문에 대한 유사한 기존 답변을 찾을 수는 없었지만, 위의 방법을 따라 설정하시면 원하시는 디버깅 작업을 수행하실 수 있을 것입니다. 또한, 임베디드 디버깅에 관한 기본 안내서 같은 자료도 참고하시기를 권장드립니다. 이는 임베디드 환경에서의 디버깅에 관한 기초 정보를 제공할 것입니다.
저는 질문자님의 이해를 돕고자 설명드리고 있으며, 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
78번 강의 관련 온도센서 질문이 있습니다.
0
19
1
디버깅이 잘연결되다가 연결이 끊어졌어요
0
91
2
디버깅 오류
0
128
2
ST Link 유무에 따른 main 프로그램 시작 유무
0
86
2
111번째 강의까지 진행했는데, 온도 정보 받아오는 게 안돼요.
0
108
2
GPIO 간단 제어해보기 강의
0
172
2
브레이크포인트
0
96
2
STM IDE 설치 과정 중 에러 문의
0
103
1
STM IDE 설치 강의 중 문의
0
156
2
13강 프로젝트생성해보기 관련 질문
0
190
3
난방실만들기.4 진행 중, m_state 값 초기화가 안됩니다..
0
115
2
IDE 설치 영상 관련 문의
0
107
2
[정보 공유] STM32CubeIDE 버전별 이슈 정리 (1.19 미만 / 2.0.0 이상)
0
457
2
스위치회로 value값 바뀌지 않음
0
137
2
FND 점등에 성공했는데, Controller.c 디버깅 중 문제가 생겼습니다.
0
139
2
FND 7세그먼트 처음 킬 때의 '7777'불이 안 들어옵니다.
0
158
2
포트에 안잡히면 x쉘에서 Port설정을 어떻게 하죠..?
0
162
2
빌드 및 디버깅 오류
0
313
2
보드에 불이 안들어옵니다.
0
160
2
씽크 오류
0
96
1
고추건조기 개발보드 전원연결 문제점..
0
161
2
회로도 핀 연결 질문
0
119
2
elf 파일을 찾을수 없다는 오류
0
170
2
Nucleo 보드로 대체
0
132
2





