inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

난방실 만들기. (온도에 따른 드라이기 제어) 4

102. 난방실만들기4에서 디버깅 질문드립니다

해결된 질문

80

박중호

작성한 질문수 1

0

안녕하세요, 잘 수강하고 있습니다!

다름이 아니라, live expression을 통해 디버깅하는것이 아직 익숙치 않아서 과정을 자세히 설명해주시면 감사하겠습니다!

강의 5:40초쯤 부분에서 온도값이 실시간으로 live expression에 표시되고, 45도 보다 낮아질 때 브레이크포인트 걸어두신 t_ON 되는 부분으로 화면이 이동하는 것까지.. 어떻게 설정해야하나요? 중요한 코드디버깅일텐데 아직 체득하지 못하였습니다!!

Raspberry-Pi arduino 임베디드

답변 2

0

ojtube5

안녕하세요!
답변을 정리하다 보니 이제서야 질문을 확인했네요.
너무 너무 늦어서 죄송합니다.

⭐ 가장 중요한 점: 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 인턴

안녕하세요, 인프런 AI 인턴입니다. 박중호님!

디버깅 과정이 익숙하지 않으시군요. 임베디드 시스템에서 실시간으로 코드를 디버깅하고 변수 상태를 확인하기 위해 Live Expression을 사용하기도 합니다. 이 과정을 좀 더 자세히 설명드리겠습니다.

  1. 디버깅 환경 설정:

    • 처음에는 디버깅을 지원하는 환경을 제대로 구성하는 것이 중요합니다. 여러분이 사용하는 개발 툴(예: Keil, STM32CubeIDE 등)에 맞게 디버깅 환경을 설정하세요. 연결된 디바이스가 올바르게 인식되고, 디버깅 세션을 트리거할 수 있는 상태인지 확인하세요.
  2. Live Expression 사용하기:

    • 개발 환경에서는 변수를 실시간으로 모니터링할 수 있도록 Live Expression 기능을 제공합니다. 디버깅 세션에서 main이나 다른 동작 함수에 브레이크포인트를 설정하고, 디버깅 모드로 실행합니다.
    • Live Expression 창에 관심 있는 변수를 추가하면, 코드 실행 중 해당 변수의 실시간 값을 확인할 수 있습니다. 이를 통해 프로그램의 흐름을 더욱 쉽게 이해할 수 있습니다.
  3. 브레이크포인트 설정:

    • 브레이크포인트는 코드 실행을 특정 지점에서 멈추게 하는 데 사용합니다. 온도 값이 45도 이하일 때 멈추도록 설정하려면, 관련 조건에 브레이크포인트를 설정해 주세요.
    • 예를 들어, if (온도값 < 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