จุดพักเป็นวิธีที่ดีในการดูว่าคอมไพเลอร์ทำงานกับรหัสของคุณอย่างไร ตอนนี้คำถามของฉันคือมีความเป็นไปได้ที่จะใช้เบรกพอยต์เมื่อคุณแก้จุดบกพร่องรหัสของคุณ?
จุดพักเป็นวิธีที่ดีในการดูว่าคอมไพเลอร์ทำงานกับรหัสของคุณอย่างไร ตอนนี้คำถามของฉันคือมีความเป็นไปได้ที่จะใช้เบรกพอยต์เมื่อคุณแก้จุดบกพร่องรหัสของคุณ?
คำตอบ:
ตามที่ระบุไว้ในคำตอบของ Majenko Arduino IDE ไม่ได้จัดเตรียมกลไกเบรกพอยต์ แต่Atmel Studio รองรับการเบรกพอยต์ [*]
อย่างไรก็ตามหากคุณมีสวิตช์และไฟ LED คุณสามารถติดตามความคืบหน้าของโปรแกรมของคุณในแบบที่ให้ประโยชน์บางอย่างของจุดพัก คุณจะเพิ่มรูทีนย่อยสมมติBPReport()
ว่าผ่านเอาต์พุตอนุกรมหรือ LCD รายงานค่าของตัวแปรที่สำคัญจากนั้นติดไฟ LED และรอจนกว่าสวิตช์จะถูกกดและปล่อยพร้อมกับ debounce เรียกBPReport()
รูทีนของคุณไม่ว่าคุณต้องการเบรกพอยต์แบบไม่มีเงื่อนไข สำหรับจุดพักที่มีเงื่อนไขคุณสามารถมีรูทีนBPReportIf(cond)
ที่เรียกใช้ BPReport()
ถ้าcond
เป็นจริง หากคุณไม่ต้องการส่งสัญญาณออกทางอนุกรมคุณอาจใช้ LED หลายตัวหรือจอ LCD และคุณอาจใช้สวิตช์หลายตัวหากคุณต้องการการควบคุมการแบ่งสัญญาณภายนอก (ตัวอย่างเช่นcond
อาจเป็นการทดสอบสวิตช์พิเศษตัวใดตัวหนึ่ง)
[*] ตัวแก้จุดบกพร่องฮาร์ดแวร์บางตัวแก้ไขรหัสที่ดาวน์โหลดในแต่ละครั้งที่มีการเพิ่มเปลี่ยนหรือลบจุดพัก การใช้งานนั้นจะทำให้หน่วยความจำแฟลชเสื่อมสภาพเร็วกว่าดาวน์โหลดเป็นครั้งคราว หากมีการใช้ชิปอย่างหนักสำหรับการดีบักดังกล่าวอย่าใช้ชิปนั้นในระบบการผลิต
แม้ว่า Majenko คำตอบของเขาจะถูกต้องมีตัวเลือกอื่นอยู่บ้าง
ตามการดีบักฮาร์ดแวร์จริงตามที่ระบุไว้โดย majenko ฉันจะพูดว่า:
ตัวเลือกการแก้ไขข้อบกพร่องอื่น ๆ จากหมวดหมู่ที่แตกต่างกันอย่างสิ้นเชิงคือการจัดระเบียบรหัสของคุณเพื่อให้ตรรกะการตัดสินใจ (ฮาร์ดแวร์อิสระ) และการกระทำ (ขึ้นอยู่กับฮาร์ดแวร์) จะถูกแยกออกจากกันอย่างสมบูรณ์
จากนั้นรวบรวมร่างของคุณเป็นโปรแกรมในเครื่องและทำการดีบัก "ตรรกะการตัดสินใจ" ในเครื่องท้องถิ่นของคุณ วิธีนี้ไม่อนุญาตสำหรับ "การดีบักฮาร์ดแวร์" วิธีนี้ยังช่วยให้การทดสอบหน่วย
โปรดทราบว่าเครื่องในประเทศของคุณน่าจะเป็น 32 หรือ 64 บิตและ Arduino ส่วนใหญ่เป็น 8 bitters ซึ่งจะทำให้เกิดความแตกต่างของชนิดข้อมูลซึ่งเป็นจุดสนใจพิเศษเมื่อใช้วิธีนี้
Arduino-Debugห้องสมุดให้ดีบักง่ายในเป้าหมายของการสเก็ตช์ Arduino คำสั่งดีบักถูกเพิ่มไปยังร่างโดยตรง เชลล์คำสั่งดีบักเกอร์เริ่มต้นที่จุดพักและการยืนยัน
ภาพหน้าจอด้านบนแสดงตัวอย่างภาพร่างที่เรียกใช้บน Arduino Mega พร้อมจอแสดงผลเอาต์พุตอนุกรมที่ใช้โดยแอปพลิเคชันและ Serial1 ที่ใช้สำหรับเชลล์ดีบักเกอร์
คำสั่งดีบัก Sketch
แก้ไขคำสั่งเชลล์
คำสั่งเชลล์ดีบักทั้งหมดสามารถย่อให้เป็นคำสั่งอักขระเดียว โปรดดู README สำหรับรายละเอียดเพิ่มเติม; รายละเอียดการติดตั้งเช่นร่างและการเปรียบเทียบ
ไม่ได้อยู่ใน Arduino IDE
คุณต้อง:
ไม่มีข้อกำหนดสำหรับการดีบักผ่านอินเตอร์เฟส UART / USB โดยใช้ bootloader