Breakpoint adalah cara yang bagus untuk melihat bagaimana kompiler berjalan ke kode Anda. Sekarang pertanyaan saya adalah, apakah ada kemungkinan untuk menggunakan breakpoint ketika Anda men-debug kode Anda?
Breakpoint adalah cara yang bagus untuk melihat bagaimana kompiler berjalan ke kode Anda. Sekarang pertanyaan saya adalah, apakah ada kemungkinan untuk menggunakan breakpoint ketika Anda men-debug kode Anda?
Jawaban:
Seperti disebutkan dalam jawaban Majenko, Arduino IDE tidak menyediakan mekanisme breakpoint tetapi Atmel Studio mendukung breakpoint . [*]
Namun, jika Anda memiliki sakelar dan LED, Anda dapat melacak kemajuan program Anda dengan cara yang memberikan beberapa manfaat breakpoints. Anda akan menambahkan subrutin, katakanlah BPReport()
, bahwa melalui keluaran serial atau LCD melaporkan nilai variabel kritis, kemudian menyalakan LED dan menunggu sampai sakelar ditekan dan dilepaskan, dengan debounce. Panggil BPReport()
rutin Anda di mana pun Anda ingin breakpoint tanpa syarat. Untuk breakpoint bersyarat, Anda dapat memiliki rutinitas BPReportIf(cond)
yang memanggil BPReport()
jika cond
benar. Jika Anda tidak ingin membuat output melalui serial, Anda mungkin menggunakan beberapa LED atau LCD, dan Anda mungkin menggunakan beberapa sakelar jika Anda ingin kontrol pemutusan eksternal (misalnya, cond
bisa menjadi tes dari salah satu sakelar tambahan).
[*] Beberapa pelanggar perangkat keras memodifikasi kode yang diunduh setiap kali breakpoint ditambahkan, diubah, atau dihapus. Penggunaan itu akan menghabiskan memori flash lebih cepat daripada hanya sesekali mengunduh saja. Jika sebuah chip telah banyak digunakan untuk debugging seperti itu, jangan gunakan chip itu dalam sistem produksi.
Meskipun Majenko jawabannya benar ada beberapa opsi lain.
Adapun debugging hardware nyata seperti yang dinyatakan oleh majenko saya akan mengatakan:
Opsi debug lain dari kategori yang sama sekali berbeda adalah mengatur kode Anda sehingga logika keputusan (bebas perangkat keras) dan tindakan (bergantung pada perangkat keras) benar-benar terpisah.
Kemudian kompilasi sketsa Anda sebagai program lokal dan debug "logika keputusan" pada mesin lokal Anda. Metode ini tidak memungkinkan untuk "debugging perangkat keras". Metode ini juga memungkinkan pengujian unit.
Perhatikan bahwa mesin lokal Anda mungkin 32 atau 64 pahit dan kebanyakan Arduino adalah 8 pahit yang akan menghasilkan perbedaan dalam tipe data yang merupakan titik perhatian ekstra saat menggunakan metode ini.
The Arduino-Debug perpustakaan menyediakan sederhana pada target debugger untuk sketsa Arduino. Perintah debug ditambahkan langsung ke sketsa. Shell perintah debugger dimulai pada break-point dan pernyataan.
Tangkapan layar di atas menunjukkan contoh sketsa yang dijalankan pada Arduino Mega dengan monitor keluaran Serial yang digunakan oleh aplikasi dan Serial1 digunakan untuk shell debugger.
Sketsa Perintah Debug
Perintah Shell Debug
Semua perintah shell debug dapat disingkat menjadi perintah karakter tunggal. Silakan lihat README untuk perincian lebih lanjut; detail instalasi, contohnya sketsa dan benchmarking.