Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

เริ่มต้นใช้งาน

ในส่วนนี้คุณจะได้พบข้อมูลเกี่ยวกับวิธีเริ่มต้นเขียน instrumentation ด้วย DSL Whamm

การติดตั้ง

ปัจจุบัน วิธีติดตั้ง Whamm คือการโคลนรีโพสิทอรี บิลด์ซอร์สโค้ดด้วยตนเอง แล้วเพิ่มไบนารีที่บิลด์ได้ลงในตัวแปร PATH ของคุณ ในอนาคต ผู้ใช้จะสามารถดาวน์โหลดไบนารีที่บิลด์ไว้ล่วงหน้าจากหน้า releases บน GitHub ได้ เพราะตอนนี้เรามีรีลีสของ Whamm ที่ติดแท็กและเสถียรแล้ว

ขั้นตอนมีดังนี้:

  1. โคลนรีโพ Whamm
  2. บิลด์ซอร์สโค้ดด้วย cargo build --release
  3. เพิ่มไบนารีที่บิลด์ได้ลงใน PATH ของคุณ ไบนารีนี้ควรอยู่ที่ target/release/whamm1

การทดสอบเบื้องต้น

การทดสอบเบื้องต้นที่คุณสามารถรันเพื่อยืนยันว่าไบนารี Whamm อยู่ใน path ของคุณและทำงานได้ตามที่คาดหวัง คือการรันคำสั่ง whamm --help CLI จะแสดงข้อมูลเกี่ยวกับคำสั่งและตัวเลือกต่างๆ ที่พร้อมใช้งานให้คุณ

มอนิเตอร์และตัวจัดการ Wasm

อย่างที่กล่าวไว้ในบทนำ Whamm ใช้ได้ทั้งเพื่อมอนิเตอร์ หรือ ปรับเปลี่ยนการทำงานของโปรแกรม

การมอนิเตอร์การทำงานหมายถึงการเก็บข้อมูลบางอย่างเกี่ยวกับพฤติกรรมเชิงพลวัตของโปรแกรม ซึ่งมักนำไปใช้ในการดีบัก การบันทึกล็อก และการเก็บเมตริก

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

อ่านเนื้อหาส่วน “เริ่มต้นใช้งาน” ของหนังสือเล่มนี้ต่อไป เพื่อดูวิธีเขียนมอนิเตอร์และตัวจัดการในลักษณะดังกล่าว

โครงสร้างของ Instrumentation ใน Whamm

โครงสร้างหลักของ instrumentation ที่เขียนด้วย Whamm ประกอบด้วยสองส่วน คือ สคริปต์ Whamm (instr.mm) และไลบรารี instrumentation (instr.wasm)

ไฟล์ทั้งสองนี้ร่วมกันบอกคอมไพเลอร์ Whamm ว่าจะแทรก instrumentation ที่ไหน และจะฉีดตรรกะอะไร ณ จุดเหล่านั้น

instr.mm

ที่ไหนที่จะแทรก instrumentation

สคริปต์ Whamm นี้บรรยายหน่วยของ instrumentation โดยระบุจุดที่ต้องการโพรบในแอปพลิเคชันด้วยไวยากรณ์โพรบ โดยเนื้อโพรบแต่ละอันจะเก็บตรรกะที่จะฉีด ณ จุดที่แมตช์นั้น DSL มีความสามารถเพียงพอต่อการรองรับกรณีการใช้งานมอนิเตอร์บางประเภท อย่างไรก็ตาม เพื่อไม่ให้ขอบเขตของ DSL บานปลาย เราจึงตัดสินใจผลักการเขียนโปรแกรมแบบอเนกประสงค์ออกไปยังภาษาใดก็ได้ที่คอมไพล์เป็น Wasm ได้ สคริปต์สามารถเรียกไลบรารี instrumentation ของผู้ใช้ ซึ่งจัดเตรียมไว้ในรูป lib.wasm

lib.wasm

ตรรกะอะไรที่จะแทรก ณ จุดเป้าหมายของแอปพลิเคชัน

การจัดหาไลบรารีนี้ให้ Whamm เป็นเรื่องทางเลือก จำเป็นเฉพาะเมื่อผู้ใช้ต้องการเขียน instrumentation ด้วยภาษาระดับสูงกว่า หรือเมื่อ DSL ไม่มีไวยากรณ์/เครื่องมือบางอย่างที่จำเป็นต่อตรรกะ instrumentation เท่านั้น ภาษาดังกล่าวต้องคอมไพล์เป็น Wasm ได้ เนื่องจากต้องส่งไลบรารีให้คอมไพเลอร์ Whamm ในรูปไฟล์ Wasm

ผู้ใช้ควรคำนึงไว้เสมอว่า ลายเซ็นของฟังก์ชันในไลบรารีที่จะถูกเรียกใช้ภายในเนื้อโพรบ ต้องมีชนิดข้อมูลที่เข้ากันได้กับชนิดข้อมูลที่ Whamm ให้ไว้ในปัจจุบัน มิฉะนั้น Whamm จะไม่สามารถคอมไพล์โค้ด instrumentation ของผู้ใช้ได้

เครื่องมือที่เป็นประโยชน์

ต่อไปนี้คือเครื่องมือบางอย่างที่อาจช่วยคุณได้เมื่อทำงานกับ Wasm:

  1. wabt หรือที่รู้จักกันในชื่อ WebAssembly Binary Toolkit
  2. wasm-tools

1: เราแนะนำให้เพิ่มไบนารีที่บิลด์ภายใน target/ ลงใน path ของคุณ เพราะจะทำให้คุณดึงการเปลี่ยนแปลงล่าสุดบน master มาบิลด์เวอร์ชันใหม่ และมีไบนารีล่าสุดอยู่ใน PATH โดยอัตโนมัติ