본문 바로가기
Trace32

[Trace32] 조건부 Breakpoint 제대로 쓰는 방법 (Change Breakpoint 창 실무 활용)

by Autosar 2026. 5. 4.
반응형

Breakpoint를 처음 사용할 때는 크게 불편함이 없다.

코드 한 줄에 걸어두고, 실행하면 그 위치에서 멈춘다.

이것만으로도 디버깅이 되는 것처럼 보인다.

 

그런데 조금만 실무 상황으로 들어가면 바로 문제가 생긴다.

 

예를 들어, 어떤 변수 warning이 1로 바뀌는 순간을 확인하고 싶다고 가정해보자.

그래서 아래 코드에 Breakpoint를 걸었다.

if (speed > 100U)
{
    warning = 1U;   // ← Breakpoint 설정
}

 

이제 실행하면 될 것 같지만, 실제로는 전혀 그렇지 않다.

이 함수가 주기적으로 계속 실행된다면, 조건과 상관없이 이 줄에 도달할 때마다 계속 멈추게 된다.

 

아직 warning이 1이 되지도 않았는데, 프로그램은 계속 멈춘다.

결국 우리는 실행과 정지를 반복하면서 “지금인가?”를 계속 확인해야 한다.

 

이 상태에서는 디버깅이 아니라, 타이밍을 맞추는 작업에 가까워진다.

 

“warning이 1일 때만 멈추고 싶다”

 

우리가 실제로 원하는 건 단순하다.

warning == 1 이 되는 순간, 단 한 번만 정확하게 멈추는 것

 

그런데 일반 Breakpoint는 이걸 할 수 없다.

위치만 기준으로 동작하기 때문이다.

 

이 문제를 해결하는 방법이 바로 조건부 Breakpoint다.

 

Trace32에서는 Breakpoint를 단순히 켜고 끄는 것이 아니라, 조건을 추가해서 동작 방식을 바꿀 수 있다.

그 설정을 하는 곳이 바로 Change Breakpoint 창이다.

 

Breakpoint는 단순 정지 기능이 아니라, 조건을 통해 동작을 제어할 수 있다.

 

이 창에서 핵심은 하나다.

“언제 멈출 것인가”를 정의하는 것이다.

 

여기서 조건을 추가하면, Breakpoint는 더 이상 단순한 정지 기능이 아니라

상황을 판단하는 필터 역할을 하게 된다.

 

조건을 추가하면 무엇이 달라지는가

 

이제 Breakpoint에 아래와 같이 조건을 하나 추가해보자.

 

이 조건을 설정하고 다시 실행하면, 동작 방식이 완전히 달라진다.

 

코드는 여전히 해당 줄에 계속 도달한다.

하지만 그때마다 멈추지 않는다.

 

대신 내부적으로 이렇게 동작한다.

1. 코드가 해당 위치에 도달한다.
2. 조건(warning == 1)을 확인한다.
3. 조건이 맞지 않으면 그대로 통과한다.
4. 조건이 맞는 순간에만 실행이 멈춘다.

 

겉으로 보면 “딱 한 번, 정확한 순간에만 멈춘 것처럼” 보인다.

 

실제로 체감되는 차이

 

조건 없이 Breakpoint를 걸었을 때는 계속 멈춰서 흐름을 따라가기 어려웠다.

하지만 조건을 추가하는 순간, 상황이 완전히 바뀐다.

 

- 불필요한 정지 없음

- 원하는 순간만 정확히 멈춤

- 흐름 끊김 없이 디버깅 가능

 

이 차이는 단순 편의성이 아니라 디버깅 가능 여부 자체를 바꿔버리는 수준이다.

 

왜 실무에서 필수인가

 

실제 코드에서는 대부분의 함수가 반복 실행된다.

특히 주기 Task 안에 있는 로직은 수십, 수백 번 반복된다.

 

이 상태에서 일반 Breakpoint만 사용하면 계속 멈추기 때문에 분석 자체가 어려워진다.

결국 조건을 걸어서 “필요한 순간만 남기고 나머지는 전부 무시”해야 한다.

 

이게 조건부 Breakpoint의 본질이다.

 

흐름으로 보면 이렇게 된다

 

지금까지 내용을 하나의 흐름으로 보면 명확해진다.

 

처음에는 특정 코드 위치에서 멈추고 싶어서 Breakpoint를 건다.

하지만 코드가 반복 실행되면서 불필요하게 계속 멈춘다.

 

그래서 단순 위치가 아니라 “조건”을 추가하게 되고, 그 조건을 만족하는 순간에만 멈추도록 변경한다.

이 과정을 통해 디버깅은 “계속 멈추는 작업”에서 “필요한 순간만 정확히 잡는 작업”으로 바뀐다.

 

정리

 

Change Breakpoint 창은 단순 설정창이 아니다.

Breakpoint를 “언제 멈출지” 결정하는 핵심 기능이다.

 

조건을 추가하는 순간, Breakpoint는 위치 기반 도구에서 벗어나 상황을 판단하는 디버깅 도구로 바뀐다.

조건부 Breakpoint는 단순히 위치가 아니라, 원하는 조건이 만족되는 순간에만 멈추게 만드는 기능이다.

반응형