Gerçek zamanlı özellikli bir uygulamada hata ayıklama

RTApps, Azure Sphere SDK ile yüklenen OpenOCD ve ARM GNU Embedded Toolchain'in bir parçası olarak yüklenen GDB sürümü kullanılarak hata ayıklanır.

Visual Studio ile RTApp hatalarını ayıklama

  1. Cihazınızın USB ile bilgisayarınıza bağlı olduğundan emin olun. Başlangıç öğesini ayarla menüsünde Azure Sphere Uygulaması 'nı (RT Core) seçin; burada Azure Sphere Uygulaması geçerli gerçek zamanlı özellikli uygulamanızın adıdır veya F5 tuşuna basın.

    Uzak GDB Hata Ayıklayıcısı düğmesi

  2. Projeyi oluşturmanız istenirse Evet'i seçin. Visual Studio gerçek zamanlı özellikli uygulamayı derler, bir görüntü paketi oluşturur, panoya dışarıdan yükler ve hata ayıklama modunda başlatır. Dışarıdan yükleme , uygulamanın bulut üzerinden değil kablolu bir bağlantı üzerinden doğrudan bilgisayardan teslim olduğu anlamına gelir.

    Görüntü paketinin görüntü kimliğine dikkat edin :>Oluşturma>çıkışı: Derleme çıkışı Dağıtım oluşturmaya hazır olduğunuzda, görüntü paketinin yolunu bilmeniz gerekir.

  3. Varsayılan olarak, Çıkış penceresi Cihaz Çıkışı'ndan gelen çıkışı gösterir. Hata ayıklayıcıdan gelen iletileri görmek için Çıkışı göster: açılan menüsünden Hata Ayıkla'yı seçin. AyrıcaWindows menüsünden program ayrıştırma, yazmaçlar veya belleği > de inceleyebilirsiniz.

Visual Studio, GDB sunucusu ile OpenOCD arasında bağlantılar ayarlar, böylece rtapp üzerinde standart Visual Studio hata ayıklama arabirimini (kesme noktaları için F5, F6, F9 vb.) üst düzey bir uygulamayla aynı şekilde kullanabilirsiniz.

C kaynak kodunuzdaki bir kesme noktasında durdurulurken, geçerli adresi, geçerli komut için derleyici anımsatıcısını ve ilgili yazmaçlar veya yürütülmekte olan kaynak kodu komutu gibi bilgileri gösteren bir Ayrıştırma penceresi açabilirsiniz.

Ayrıştırma penceresini açmak için:

  1. Kesme noktasını içeren C kod kaynağı dosyasının Visual Studio'da açık olduğundan emin olun.
  2. Windows>AyrıştırmaHatalarını Ayıkla'yı> seçin veya Alt+8 tuşlarına basın.

Visual Studio Code ile RTApp hatalarını ayıklama

Visual Studio Code, F5 tuşuna basılarak veya sol çubukta hata ayıklama görünümünden hata ayıklama komutu çalıştırılarak hata ayıklanır. Örneklerde .vscode/launch.json zaten var olduğundan hata ayıklama hemen başlar. Yeni bir uygulamada hata ayıklama işlemi önce bunun bir HLApp mi yoksa RTApp mi olduğunu sorar ve yanıtınızdan bir .vscode/launch.json oluşturur. Daha sonra hata ayıklama etkinleştirilecektir.

C kaynak kodunuzda bir kesme noktasında durdurulurken, geçerli adresi, ham onaltılık verileri, geçerli komut için derleyici anımsatıcısını ve ilgili yazmaçlar veya yürütülen kaynak kodu komutu gibi bilgileri gösteren bir Ayrıştırma görünümünü açabilirsiniz.

Ayrıştırma görünümünü açmak için:

  1. Kesme noktasını içeren C kod kaynağı dosyasının Visual Studio Code düzenleyicisinde açık olduğundan emin olun.
  2. Düzenleyici penceresine sağ tıklayıp Ayrıştırılmış Görünümü Aç'ı seçin veya Görünüm>Komut Paleti>Ayrıştırılmış Görünümü Aç'ı seçin.

CLI kullanarak RTApp hatalarını ayıklama

  1. Hata ayıklama için uygulamayı başlatın:

    az sphere device app start --component-id <component id>
    

    Bu komut, uygulamanın üzerinde çalıştığı çekirdeği döndürür.

  2. Uygulamanın oluşturulduğu sysroot için Openocd klasörüne gidin. Bu Hızlı Başlangıçta sysroot 5+Beta2004'dür. Sysroot'lar Azure Sphere SDK yükleme klasörüne yüklenir. Örneğin, Windows'da klasör varsayılan olarak konumunda ve Linux'ta 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/openocdyüklenir.

  3. Aşağıdaki örnekte gösterildiği gibi komutunu çalıştırın openocd . Örnekte uygulamanın çekirdek 0 üzerinde çalıştığı varsayılır. Uygulama çekirdek 1'de çalışıyorsa "targets io0" yerine "targets io1" yazın.

    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 Komut İstemi veya Linux komut kabuğunu kullanarak bir komut satırı arabirimi açın.

  5. uygulama .out dosyasını içeren klasöre gidin ve ARM GNU Embedded Toolchain'in bir parçası olan dosyasını başlatın arm-none-eabi-gdb:

    Windows Komut İstemi

    "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 sunucusu ,4444 üzerinde bir GDB sunucu arabirimi sağlar. Hata ayıklama için hedefi ayarlayın.

    target remote :4444

  7. Seçtiğiniz tüm gdb komutlarını çalıştırın.

İş ortağı uygulamalarıyla geliştirme

Azure Sphere cihazına bir uygulama yüklediğinizde, Azure Sphere dağıtım araçları varsayılan olarak tüm mevcut uygulamaları siler. Birbiriyle iletişim kuran uygulamalar geliştirirken bunun olmasını önlemek için uygulamaları iş ortağı olarak işaretlemeniz gerekir. Uygulamalardan birini dağıttığınızda iş ortakları silinmez. Ayrıntılar için bkz. Uygulamaları iş ortağı olarak işaretleme .

Sorun giderme

Sorunlarla karşılaşırsanız bkz. Gerçek zamanlı özellikli uygulamalarla ilgili sorunları giderme.