다음을 통해 공유


실시간 지원 애플리케이션 디버그

Important

Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.

RTApp은 Azure Sphere SDK와 함께 설치된 OpenOCD 및 ARM GNU Embedded 도구 체인의 일부로 설치된 GDB 버전을 사용하여 디버그됩니다.

Visual Studio를 사용하여 RTApp 디버그

  1. 장치가 USB로 PC에 연결되어 있는지 확인합니다. 시작 항목 설정 메뉴에서 Azure Sphere 앱이 현재 실시간 지원 애플리케이션의 이름인 Azure Sphere 앱(RT Core)을 선택하거나 F5 키를 누릅니다.

    원격 GDB 디버거 단추

  2. 프로젝트를 빌드하라는 메시지가 표시되면 예를 선택합니다. Visual Studio는 실시간 지원 애플리케이션을 컴파일하고, 이미지 패키지를 만들고, 보드로 사이드로드 하고, 디버그 모드에서 시작합니다. 테스트용 로드 는 애플리케이션이 클라우드를 통해 전달되지 않고 유선 연결을 통해 PC에서 직접 전달됨을 의미합니다.

    출력 표시 출력 보기>>에서 이미지 패키지의 이미지 ID를 확인합니다. 빌드 출력 배포를 만들 준비가 되면 이미지 패키지의 경로를 알아야 합니다.

  3. 기본적으로 출력 창에는 디바이스 출력의 출력이 표시됩니다. 디버거의 메시지를 보려면 다음 드롭다운 메뉴에서 출력 표시에서 디버그를 선택합니다. 디버그> 메뉴를 통해 프로그램 디스어셈블리, 레지스터 또는 메모리를 검사할 수도 있습니다.

Visual Studio는 상위 수준 애플리케이션에서와 마찬가지로 GDB 서버와 OpenOCD 간의 연결을 설정하여 RTApp에서 표준 Visual Studio 디버깅 인터페이스(중단점용 F5, F6, F9 등)를 사용할 수 있습니다.

C 소스 코드의 중단점에서 중지되는 동안 현재 주소, 현재 명령에 대한 어셈블러 니모닉 및 관련된 레지스터 또는 실행 중인 소스 코드 명령과 같은 정보를 표시하는 디스어셈블리 창을수 있습니다.

디스어셈블리 창을 열려면:

  1. 중단점이 포함된 C 코드 소스 파일이 Visual Studio에서 열려 있는지 확인합니다.
  2. Windows>디스어셈블리 디버그>를 선택하거나 Alt+8을 누릅니다.

Visual Studio Code를 사용하여 RTApp 디버그

Visual Studio Code는 F5 키를 누르거나 왼쪽 막대의 디버그 보기에서 디버그 명령을 실행하여 디버그됩니다. 샘플에서 .vscode/launch.json 이미 있으므로 디버깅이 즉시 시작됩니다. 새 앱에서 디버깅은 먼저 이것이 HLApp인지 RTApp인지 묻고 대답에서 .vscode/launch.json 만듭니다. 그런 다음, 디버깅을 사용하도록 설정됩니다.

C 소스 코드의 중단점에서 중지되는 동안 현재 주소, 원시 16진수 데이터, 현재 명령에 대한 어셈블러 니모닉 및 관련된 레지스터 또는 실행 중인 소스 코드 명령과 같은 정보를 보여 주는 디스어셈블리 보기를 열 수 있습니다.

디스어셈블리 보기를 열려면:

  1. 중단점이 포함된 C 코드 소스 파일이 Visual Studio Code 편집기에서 열려 있는지 확인합니다.
  2. 편집기 창을 마우스 오른쪽 단추로 클릭하고 디스어셈블리 보기 열기를 선택하거나 명령 팔레트>열기 디스어셈블리 보기 보기를> 선택합니다.

CLI를 사용하여 RTApp 디버그

  1. 디버깅을 위해 애플리케이션을 시작합니다.

    azsphere device app start --component-id <component id>
    

    이 명령은 애플리케이션이 실행 중인 코어를 반환합니다.

  2. 애플리케이션이 빌드된 sysroot의 Openocd 폴더로 이동합니다. 이 빠른 시작에서 sysroot는 5+Beta2004입니다. sysroots는 Azure Sphere SDK 설치 폴더에 설치됩니다. 예를 들어 Windows에서 폴더는 기본적으로 Linux의 에 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd설치됩니다.

  3. 다음 예제와 같이 openocd를 실행합니다. 이 예제에서는 앱이 코어 0에서 실행되고 있다고 가정합니다. 앱이 코어 1에서 실행되는 경우 "targets io0"을 "targets io1"로 바꿉니다.

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  4. PowerShell, Windows 명령 프롬프트 또는 Linux 명령 셸을 사용하여 명령줄 인터페이스를 엽니다.

  5. 애플리케이션 .out 파일이 포함된 폴더로 이동하고 ARM GNU Embedded 도구 체인의 일부인 start arm-none-eabi-gdb:

    Windows 명령 프롬프트

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  6. OpenOCD 서버는 :4444에 GDB 서버 인터페이스를 제공합니다. 디버깅 대상을 설정합니다.

    target remote :4444

  7. 선택한 모든 gdb 명령을 실행합니다.

파트너 앱을 사용하여 개발

애플리케이션을 Azure Sphere 디바이스에 로드하는 경우 Azure Sphere 배포 도구는 기본적으로 기존 애플리케이션을 모두 삭제합니다. 서로 통신하는 애플리케이션을 개발할 때 이러한 문제가 발생하지 않도록 하려면 애플리케이션을 파트너표시해야 합니다. 애플리케이션 중 하나를 배포하는 경우 해당 파트너는 삭제되지 않습니다. 자세한 내용은 애플리케이션을 파트너로 표시를 참조하세요.

문제 해결

문제가 발생하면 실시간 지원 애플리케이션 문제 해결을 참조하세요.