Inflearn brand logo image

인프런 커뮤니티 질문&답변

장한별님의 프로필 이미지
장한별

작성한 질문수

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

UART로 printf()를 구현해보자! 5

ST_LINK IDE에서 디버깅 시 브레이크 포인트가 안 걸려요

작성

·

56

0

제가 지금 53강 진행 중인데요.

처음 진행 단계부터 지금까지 쭉 제가 걸어 놓은 브레이크 포인트가 "Breakpoint installation failed: unmatched quote"라는 주의?, 경고? 메시지가 뜨면서 디버깅 할 때 마다 해당 브레이크 포인트에 걸리지가 않습니다.

그냥 짚고 넘어가지 않았는데, 계속 이러니 신경이 쓰여서 질문 드려봅니다.

해결책이 있을까요??

답변 2

0

ojtube5님의 프로필 이미지
ojtube5
지식공유자

STM32CubeIDE는 내부적으로 GDB를 사용해서 디버깅을 돌려요.
그런데 "Breakpoint installation failed: unmatched quote" 이런 메시지가 뜨는 건,
GDB가 브레이크포인트를 설치할 때 내부 문법 오류가 났다는 뜻이에요.

제가 겪어본 바로는 보통 이런 경우들이 있었어요:

  1. 브레이크포인트 정보가 깨졌거나, IDE에 캐시된 상태가 꼬였을 때

  2. 프로젝트를 빌드한 결과(.elf)가 현재 소스랑 안 맞을 때

  3. 브레이크포인트 설정할 때, 따옴표(")가 이상하게 들어갔을 때

  4. 브레이크포인트가 걸린 위치가 애초에 디버깅 가능한 위치가 아닐 때
    (예: 헤더파일, 인라인 함수 등)

  5. 컴파일할 때 디버깅 정보(-g)가 누락되었거나, 최적화가 너무 심하게 걸렸을 때 (-O2, -O3)

특히 최적화 옵션이 높은 상태에서 함수가 인라인 되면,
브레이크포인트가 걸려도 GDB가 위치를 찾지 못해서 이런 문제가 생기더라고요.

========================
해볼 수 있는 해결 방법 (STM32CubeIDE 기준)

1. 브레이크포인트 전부 삭제하고 다시 걸어보기

  • 메뉴에서 Run > Remove All Breakpoints 눌러서
    일단 싹 다 지우고 다시 걸어보는 게 좋아요.

  • 특히 오래된 프로젝트 하다가 중간에 코드 바꾸거나 라인 이동했을 땐
    브레이크포인트 정보랑 실제 위치가 안 맞아서 오류가 잘 생겨요.


2. Clean + Build 강제 수행

  • Project > Clean 누르고, 프로젝트 전체 클린 한 다음
    Build Project 눌러서 다시 빌드 해봐요.

  • 이렇게 하면 .elf 파일이 다시 깔끔하게 만들어지고,
    디버깅 정보도 다시 맞춰져요.


3. 컴파일 최적화 꺼주기

  • Project > Properties 들어가서
    C/C++ Build > Settings > Tool Settings > MCU GCC Compiler > Optimization 이쪽으로 가요.

  • 거기서 Optimization Level을 None (-O0) 으로 바꿔줘요.

👉 이거 안 하면 함수가 인라인 되거나 코드가 사라져서
브레이크포인트가 제대로 안 걸릴 수 있어요.


4. 디버깅 세션 완전히 껐다가 다시 시작

  • 디버그하다가 이상한 거 뜨면 Run > Terminate 로 디버깅 끝내고
    Run > Disconnect로도 확실히 끊어줘요.

  • 그 다음에 다시 Debug Configurations 들어가서
    설정 확인하고 재시작하면 안정적으로 붙는 경우가 많아요.


5. 라인 말고 함수명으로 브레이크 걸어보기

  • 예를 들어 main.c:42 이런 식으로 줄 번호로 걸지 말고
    그냥 main() 함수에 직접 브레이크 걸어봐요.

  • 함수명이 명확한 경우엔 이게 더 잘 걸리는 경우도 있어요.


6. 디버그 로그 켜서 GDB 내부 상태 확인하기

  • Run > Debug Configurations 들어가서
    Startup > Debugger 탭에 가면
    “Enable GDB trace logging” 옵션 있어요. 체크하고 실행해보세요.

  • 그럼 나중에 .log 파일로 어떤 명령어가 문제였는지 확인 가능해요.

0

안녕하세요, 인프런 AI 인턴입니다. 장한별님.

브레이크포인트 설치 실패 문제를 겪고 계시는군요. "Breakpoint installation failed: unmatched quote"라는 에러 메시지는 주로 코드 내에서 문자열이나 주석 처리 등과 관련된 문제가 있을 때 발생할 수 있습니다. 해결 방법을 안내해 드리겠습니다.

  1. 코드 검토:

    • 코드 내에 문자열이나 주석에서 짝이 맞지 않는 작은따옴표(‘)나 큰따옴표(“)가 있는지 확인하시기 바랍니다. 특히 String 리터럴이나 주석에서 문제가 발생할 수 있습니다.
  2. IDE 설정 점검:

    • 사용하는 IDE에서 설정 파일이나 프로젝트 설정이 잘못되어 있을 수 있으니 확인해보세요. 특히 디버거 설정 관련 오류가 없는지 확인하셔야 합니다.
  3. 코드 정리:

    • 불필요한 줄바꿈이나 공백이 있는 경우 코드를 정리해보세요. 가독성을 높이면 문제가 무엇인지 파악하는 데 도움이 될 수 있습니다.
  4. 브레이크 포인트 재설정:

    • 문제가 발생하는 브레이크 포인트를 삭제한 후, 코드를 다시 읽어가며 필요한 부분에 브레이크 포인트를 다시 설정해보세요.

아래 유사한 문제와 관련된 게시물들도 참고하시면 도움이 될 것입니다:

위의 방법들이 문제 해결에 도움이 되기를 바랍니다. 여전히 문제가 지속된다면 코드의 특정 부분을 자세히 검토하거나, 다른 학습 사이트나 STMicroelectronics 포럼에서도 추가적인 도움을 얻을 수 있으니 활용해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

장한별님의 프로필 이미지
장한별

작성한 질문수

질문하기