การดีบักบล็อครหัสในโหมดองค์กร


11

มีเครื่องมือใดบ้างที่ทำให้เกิดข้อผิดพลาดในการติดตามในบล็อกโหมดองค์กรได้ง่ายขึ้น (ฉันทำงานกับงูหลามโดยเฉพาะ)

เวิร์กโฟลว์ปัจจุบันของฉันคือการคัดลอกรหัสที่ทำงานกับบล็อกแหล่งที่มาและพยายามปรับเปลี่ยนเพียงเล็กน้อยเท่านั้น หากเกิดข้อผิดพลาดที่สำคัญฉันจะคัดลอกมันกลับไปที่ไฟล์อื่นหรือทำให้ยุ่งเหยิงบล็อกและแก้จุดบกพร่องไฟล์ที่เกิดขึ้น

มีเครื่องมืออะไรบ้างที่ฉันขาดหายไป? (เช่นบางอย่างเช่นโหมดการรวบรวมที่จะนำคุณไปยังบรรทัดที่ข้อผิดพลาดเปิดอยู่)

แก้ไข: ตัวอย่างเช่นฉันเพิ่งพบ Cc Cv v ซึ่งแสดงบัฟเฟอร์ที่มีการขยายการอ้างอิงในตอนนี้ น่าเสียดายที่มันไม่รวมอาร์กิวเมนต์ของส่วนหัวดังนั้นโค้ดจากสิ่งนี้จึงไม่สามารถรันได้โดยไม่ต้องนำเข้าสิ่งที่อยู่ในล่ามก่อน ในทำนองเดียวกันหากฉันมีคำสั่ง return ซึ่งทำให้ไม่สามารถดำเนินการได้และบัฟเฟอร์ไม่สามารถแก้ไขได้ดังนั้นใช้ขั้นตอนหลายขั้นตอนในการรับซอร์สที่รันได้จากบล็อกหลาม


3
ดูemacs.stackexchange.com/questions/13244/... (org-src-debug)วิธีการแก้ปัญหาโปรดของฉันปัจจุบันคือ นี่เป็นข้อดีที่คุณสามารถดีบักซอร์สโค้ดบล็อกด้วยอาร์กิวเมนต์อินพุต
โทเบียส

ความคิดเห็นสำหรับผู้อื่นที่มีปัญหาที่คล้ายกัน: user2699 แก้ไขคำถามเพื่อให้ชัดเจนว่าเขาต้องการที่จะแก้จุดบกพร่องบล็อกรหัสที่มาหลาม ความคิดเห็นล่าสุดของ Tobias ใช้เฉพาะกับการดำเนินการบล็อกโค้ดemacs-lisp
Tobias

1
คุณเพิ่ม:sessionส่วนหัวในบล็อครหัสของคุณหรือไม่ :session *my-python*เช่น จากนั้นดูการดำเนินการสคริปต์ใน*my-python*บัฟเฟอร์ในเฟรมหรือหน้าต่างอื่น ฉันเดาว่าคุณต้องการบางสิ่งที่ซับซ้อนกว่านี้ใช่ไหม?
Melioratus

@Melioratus มันเป็นบิตดั้งเดิม (ดูเหมือนจะไม่จัดการกับข้อผิดพลาดและเพิ่มเอาต์พุตพิเศษใน python console) แต่มันดีกว่าไม่มีอะไรมาก และคอนโซลหลามก็ดีมาก คุณควรส่งสิ่งนั้นเป็นคำตอบ
user2699

@ Tobias ขอบคุณที่เป็นสิ่งที่ฉันกำลังมองหาไม่เฉพาะเจาะจงกับ elisp
user2699

คำตอบ:


7

วิธีที่ 1

  1. เพิ่ม:sessionส่วนหัวในบล็อกแหล่งที่มาของคุณ

    ในตัวอย่างการใช้:ส่วนหัวเซสชั่นจะรันโค้ดภายในบัฟเฟอร์ชื่อ*my-python*และแสดงข้อความการแก้ปัญหา

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    เคล็ดลับ:

    • ใช้C-c C-v C-zเพื่อแยกหน้าจอในแนวตั้งและแสดง*my-python*บัฟเฟอร์แบบโต้ตอบ
    • ใช้C-c C-v ?เพื่อแสดงทางลัดที่มีประโยชน์อื่น ๆ

วิธีที่ 2

  1. จุดสถานที่ในการป้องกันรหัสและแก้ไขบล็อกที่ใช้คือC-c ' org-edit-specialวิธีนี้จะช่วยให้คุณใช้python-modeฟังก์ชั่นในตัว

  2. เริ่มล่ามหลามด้วยซึ่งจะแบ่งหน้าต่างและเปิดชื่อบัฟเฟอร์C-c C-p เพื่อสลับไปยังหลามล่ามบัฟเฟอร์กด*Python*C-c C-z

    หมายเหตุ:เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่า*Warnings*บัฟเฟอร์แสดงแทน เพียงแค่วางจุดภายใน*Warnings*บัฟเฟอร์และกดqเพื่อแสดง*Python*บัฟเฟอร์

  3. เมื่อเสร็จแล้วเผยแพร่รหัสการอัปเดตของคุณเป็นรหัสบล็อกC-c 'หรือยกเลิกการเปลี่ยนแปลงใด ๆ C-c C-kกับ


หมายเหตุรหัสนี้ได้รับการทดสอบโดยใช้:
รุ่น emacs: GNU Emacs รุ่นที่ 26.1
โหมด org: 9.1.14

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.