Men-debug aplikasi mitra
Penting
Ini adalah dokumentasi Azure Sphere (Warisan). Azure Sphere (Warisan) dihentikan pada 27 September 2027, dan pengguna harus bermigrasi ke Azure Sphere (Terintegrasi) saat ini. Gunakan pemilih Versi yang terletak di atas TOC untuk melihat dokumentasi Azure Sphere (Terintegrasi).
Pastikan perangkat Anda tersambung ke PC dengan USB. Di menu Atur item startup, pilih Azure Sphere App (All Cores) di mana Azure Sphere App adalah nama proyek tingkat atas Anda atau tekan F5.
Jika Anda diminta untuk membangun proyek, pilih Ya. Visual Studio mengkompilasi aplikasi mitra, membuat paket gambar, membongkarnya ke papan, dan memulainya dalam mode debug. Sideloading berarti bahwa aplikasi dikirimkan langsung dari PC melalui koneksi kabel, daripada dikirimkan melalui cloud.
Perhatikan jalur dalam output Tampilkan Output>Tampilan>dari: Output build, yang menunjukkan lokasi paket gambar output di PC Anda. Ketika Anda siap untuk membuat penyebaran, Anda harus mengetahui jalur ke paket gambar.
Secara default, jendela Output menunjukkan output dari Output Perangkat. Untuk melihat pesan dari debugger, pilih Debug dari menu dropdown Tampilkan output dari: . Anda juga dapat memeriksa pembongkaran, pendaftaran, atau memori program melalui menu Debug>Windows.
Jika Anda memiliki dua RTApps, pastikan keduanya terdaftar sebagai aplikasi mitra dalam file launch.vs.json tingkat atas.
Gunakan debugger Visual Studio untuk mengatur titik henti, menjeda, melangkahi, melangkah ke, memulai ulang, atau menghentikan aplikasi.
Saat berhenti di titik henti dalam kode sumber C, Anda dapat membuka jendela Pembongkaran yang menunjukkan alamat saat ini, mnemonic perakit untuk perintah saat ini, dan informasi seperti register yang terlibat atau perintah kode sumber yang dijalankan.
Untuk membuka jendela Pembongkaran :
- Pastikan bahwa file sumber kode C yang berisi titik henti terbuka di Visual Studio.
- Pilih Debug>Windows>Disassembly, atau tekan Alt+8.
Buka folder yang berisi aplikasi mitra Anda. Visual Studio Code mendeteksi file ruang kerja dan menanyakan apakah Anda ingin membuka ruang kerja. Pilih Buka Ruang Kerja untuk membuka aplikasi real-time dan aplikasi tingkat tinggi sekaligus.
Klik kanan salah satu dari dua file CMakeLists.txt dan pilih Bangun Semua Proyek.
Klik ikon Jalankan di Bilah Aktivitas Visual Studio Code.
Pada menu tarik-turun yang muncul di bagian atas jendela di sisi kiri layar, pilih Luncurkan Azure Sphere Apps (gdb)(ruang kerja).
Tekan F5 untuk membangun dan men-debug proyek. Jika proyek sebelumnya belum dibuat, atau jika file telah berubah dan pembangunan ulang diperlukan, Visual Studio Code akan membangun proyek sebelum penelusuran kesalahan dimulai.
Tunggu beberapa detik hingga Visual Studio Code membangun aplikasi, membuat paket gambar, menyebarkannya ke papan, dan memulainya dalam mode debug. Anda akan melihat pembaruan status di panel Output di sepanjang jalan.
Pertama, CMake menentukan apakah aplikasi perlu dibangun. Jika demikian, fokus bergeser ke jendela output, yang menampilkan output dari CMake/Build.
Selanjutnya, panel output menunjukkan output dari azsphere saat menyebarkan paket gambar ke perangkat. Terakhir, Konsol Debug menerima fokus dan menampilkan output gdb.
Gunakan debugger Visual Studio Code untuk mengatur titik henti, menjeda, melangkahi, melangkah ke, memulai ulang, atau menghentikan aplikasi.
Saat berhenti di titik henti dalam kode sumber C, Anda dapat membuka tampilan Pembongkaran yang menunjukkan alamat saat ini, data heksa mentah, mnemonic perakit untuk perintah saat ini, dan informasi seperti register yang terlibat atau perintah kode sumber yang dijalankan.
Untuk membuka tampilan Pembongkaran:
- Pastikan bahwa file sumber kode C yang berisi titik henti terbuka di editor Visual Studio Code.
- Klik kanan di jendela editor dan pilih Buka Tampilan Pembongkaran atau pilih Tampilkan>Palet>Perintah Buka Tampilan Pembongkaran.
Hentikan aplikasi berkemampuan real time jika sedang berjalan.
azsphere device app stop --component-id <component id>
Mulai ulang aplikasi berkemampukan real time dengan penelusuran kesalahan.
azsphere device app start --component-id <component id>
Perintah ini mengembalikan inti tempat aplikasi berjalan.
<component id> App state : running Core : Real time 0
Navigasikan ke folder Openocd untuk sysroot yang dibangun dengan aplikasi. Sysroot diinstal di folder penginstalan Azure Sphere SDK. Misalnya, pada Windows folder diinstal secara default di
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd
dan di Linux, di/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Jalankan
openocd
seperti yang ditunjukkan contoh berikut. Contoh mengasumsikan aplikasi berjalan pada core 0. Jika aplikasi berjalan pada core 1, ganti "target io0" dengan "target io1".Buka antarmuka baris perintah menggunakan PowerShell, Windows Command Prompt, atau shell perintah Linux.
Navigasi ke folder yang berisi file .out aplikasi berkemampuan real time dan mulai
arm-none-eabi-gdb
, yang merupakan bagian dari Toolchain GNU Arm Embedded:Prompt Perintah 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
Server OpenOCD menyediakan antarmuka server GDB pada :4444. Atur target untuk penelusuran kesalahan.
target remote :4444
Anda sekarang dapat menjalankan perintah gdb. Tambahkan titik henti di fungsi HandleSendTimerDeferred:
break HandleSendTimerDeferred
Emulator terminal yang terhubung harus menampilkan output dari aplikasi berkemampu real time.
Buka Azure Sphere Command Prompt (Windows) atau jendela terminal (Linux) baru.
Navigasi ke folder yang berisi file .imagepackage aplikasi tingkat tinggi.
Jika aplikasi berjalan, hentikan dan kemudian mulai ulang dengan penelusuran kesalahan:
azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Buka emulator terminal dan buat koneksi Telnet atau TCP ke 192.168.35.2 di port 2342 untuk melihat output aplikasi tingkat tinggi.
Mulai gdb dengan perintah berikut:
Prompt Perintah Windows
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Catatan
Azure Sphere SDK dikirim dengan beberapa sysroot sehingga aplikasi dapat menargetkan set API yang berbeda, seperti yang dijelaskan dalam Versi runtime aplikasi, sysroot, dan API Beta. Sysroots diinstal di folder penginstalan Azure Sphere SDK di bawah Sysroots.
Atur target penelusuran kesalahan jarak jauh ke alamat IP 192.168.35.2 pada port 2345:
target remote 192.168.35.2:2345
Tambahkan titik henti di fungsi SendMessageToRTApp:
break SendMessageToRTApp
Ketik
c
untuk melanjutkan, amati output di terminal Telnet/TCP Anda, lalu beralihlah ke prompt perintah atau jendela terminal yang berisi sesi penelusuran kesalahan aplikasi real time Anda.Ketik
c
untuk melanjutkan dan mengamati output dalam sesi serial yang terhubung.
Anda dapat bekerja bolak-balik antara sesi penelusuran kesalahan, beralih antara aplikasi berkemampuan real time dan aplikasi tingkat tinggi. Anda akan melihat output yang mirip dengan yang berikut ini di dua jendela output:
Starting debugger....
Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
Listening on port 2345
Remote debugging from host 192.168.35.1, port 56522
High-level intercore comms application
Sends data to, and receives data from a real-time capable application.
Sending: hl-app-to-rt-app-00
Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00
Untuk mengakhiri setiap sesi penelusuran kesalahan, ketik q
perintah gdb.