QNX RTOS: 2-1. Running and Debugging

2025. 11. 26. 13:11운영체제/QNX

QNX 프로젝트를 타겟 보드에서 실행하는 방법은 크게 두 가지가 있음.

  1. 수동 실행: 컴파일된 바이너리를 타겟 파일 시스템으로 복사한 뒤, 터미널(Target File System Navigator)에서 직접 커맨드로 실행.
  2. IDE 실행: IDE의 Launch Configuration 기능을 사용하여 실행 및 디버깅을 자동화.

여기서는 생산성이 훨씬 높은 두 번째 방법(IDE 실행)을 중점적으로 다룸.

1. Run As: 실행 설정 (Launch Configuration)

프로젝트 우클릭 후 Run As 메뉴를 보면 보통 두 가지 선택지가 나옴.

  • 첫 번째 옵션 (Local C/C++ Application): 이전에 저장된 설정이 있다면 즉시 실행함. 설정이 없다면 기본값으로 실행함.
  • 두 번째 옵션 (Run Configurations...): Launch Configuration 대화 상자를 염. 여기서 실행에 필요한 세부 옵션을 설정할 수 있음.
    • 한 번 설정해두면 IDE가 이를 저장하여 계속 재사용함.

2. Arguments 전달 (Arguments Tab)

개발하는 프로그램이 실행 인자(Command Line Arguments)를 필요로 한다면, 이 Launch Configuration 메뉴를 반드시 거쳐야 함.

  • 위치: Run Configurations > Arguments 탭.
  • 사용법: Program arguments 섹션에 필요한 인자를 입력함.
    • 예시: 영상에서는 hello 프로그램에 world라는 인자를 넘겨서 "Hello World"를 출력하게 만듦.
  • 동작: 설정 후 Run을 누르면, IDE가 타겟에 바이너리를 업로드하고 지정된 인자와 함께 프로그램을 실행시켜 줌.

Arguments가 없을 경우

 

main의 Arguments 입력

 

Arguments 입력 후 결과

 

3. Debug As: 디버깅 세션

단순 실행이 아니라 코드의 흐름을 제어하고 싶다면 Debug As를 사용함. 이를 선택하면 IDE가 Debug Perspective로 화면 구성을 전환함.

주요 기능

  • Breakpoints: 코드 라인 좌측을 더블 클릭하여 중단점을 설정. 프로그램이 실행되다가 해당 지점에서 멈춤.
  • Stepping:
    • Step Into (F5): 함수 내부로 진입.
    • Step Over (F6): 현재 라인을 실행하고 다음 라인으로 넘어감 (함수 진입 안 함).
  • Variables & Expressions: 현재 스코프 내의 변수 값을 실시간으로 확인하거나 변경 가능.
  • Memory View: 메모리 주소의 Raw Data(Hex Dump)를 직접 확인할 수 있음.

💡 정리 및 인사이트 (CAN/Ethernet 프로젝트 관점)

  1. Arguments 활용: 지금 진행 중인 CAN-FD나 이더넷 프로젝트에서 인터페이스 이름(예: can0, en0)이나 전송 주기(interval) 등을 하드코딩하지 말고, main(int argc, char *argv[])로 받도록 짠 뒤 Arguments 탭에서 넘겨주면 테스트가 훨씬 편해짐. 매번 코드를 수정하고 다시 빌드할 필요가 없어짐.
  2. Memory View의 중요성: 네트워크 패킷을 다룰 때 구조체(Structure)의 패딩(Padding) 문제나 엔디안(Endian) 문제로 데이터가 깨지는 경우가 많음. 이때 Debug Perspective의 Memory View를 열어서 수신 버퍼의 실제 메모리 값을 눈으로 확인하는 것이 printf보다 훨씬 정확하고 빠름.

'운영체제 > QNX' 카테고리의 다른 글

QNX RTOS: 4-1. Processes and Threads  (0) 2025.11.26
QNX RTOS: 3. Security Policies  (0) 2025.11.26
QNX RTOS: 2. Momentics Development  (0) 2025.11.26
QNX RTOS: 1-10. Security  (1) 2025.11.25
QNX RTOS: 1-9. Boot Sequence  (0) 2025.11.25