ดีบักเกอร์ Linux ตัวใหม่ 'nnd' ท้าทายมาตรฐานเดิมด้วยความเร็วและ TUI ที่เป็นมิตรกับผู้ใช้

BigGo Editorial Team
ดีบักเกอร์ Linux ตัวใหม่ 'nnd' ท้าทายมาตรฐานเดิมด้วยความเร็วและ TUI ที่เป็นมิตรกับผู้ใช้

ในโลกของเครื่องมือพัฒนาบน Linux การดีบักโค้ดถูกครอบงำโดย GDB และ LLDB มาเป็นเวลานาน - เครื่องมือที่ทรงพลังแต่มักถูกวิจารณ์ในเรื่องประสบการณ์การใช้งาน ล่าสุดมีผู้ท้าชิงรายใหม่เกิดขึ้นในวงการนี้: 'nnd' ดีบักเกอร์ที่สร้างขึ้นใหม่ตั้งแต่ต้นโดยสัญญาว่าจะมอบการปรับปรุงด้านความเร็วและความสะดวกในการใช้งานเหนือกว่าตัวเลือกแบบดั้งเดิม

แนวทางใหม่สำหรับการดีบักบน Linux

ดีบักเกอร์ตัวใหม่ 'nnd' ได้แรงบันดาลใจจาก RemedyBG แต่สร้างเส้นทางของตัวเองในฐานะดีบักเกอร์แบบ Terminal User Interface (TUI) สำหรับ Linux สิ่งที่ทำให้มันโดดเด่นคือการมุ่งเน้นที่ความเร็วและการตอบสนอง - จุดที่มักสร้างความปวดหัวในเครื่องมือที่มีอยู่เดิม ต่างจาก GDB หรือ LLDB 'nnd' ถูกพัฒนาขึ้นใหม่เกือบทั้งหมด ทำให้สามารถปรับแต่งประสิทธิภาพได้แม้กระทั่งเมื่อทำงานกับไฟล์ขนาดใหญ่อย่าง ClickHouse ขนาด 2.5 GB ที่ผู้พัฒนาได้ทดสอบไว้

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

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

ความรู้สึกนี้สอดคล้องกับนักพัฒนาจำนวนมากที่เคยประสบกับความหงุดหงิดจากการรอให้ดีบักซิมโบลโหลดโดยไม่มีสัญญาณบอกความคืบหน้า ผู้แสดงความคิดเห็นอีกรายกล่าวถึงงานก่อนหน้านี้ที่ต้องเปิดปลั๊กอิน DLL ประมาณ 200 ตัวเมื่อเริ่มต้น ซึ่งทำให้ GDB ค้างสนิทระหว่างการทำดัชนี DWARF ซิมโบล

ชุดคุณสมบัติที่จำกัดแต่มีจุดมุ่งหมายชัดเจน

ในขณะที่ 'nnd' แสดงให้เห็นถึงศักยภาพ แต่ก็มาพร้อมกับข้อจำกัดที่ชัดเจน ปัจจุบันรองรับเฉพาะ Linux บนสถาปัตยกรรม x86 64-bit และทำงานเฉพาะกับโค้ดเนทีฟอย่าง C++ หรือ Rust (ไม่ใช่ภาษาแปลความหมายเช่น Java หรือ Python) ดีบักเกอร์นี้ยังขาดความสามารถในการดีบักระยะไกล (แม้ว่าจะทำงานผ่าน SSH ได้) ไม่สามารถติดตามโปรเซสที่แยกออกไป และไม่มีฟังก์ชันบันทึก/เล่นซ้ำ

แม้จะมีข้อจำกัดเหล่านี้ แต่แนวทางที่มุ่งเน้นดูเหมือนจะได้รับความนิยม หลายคนเปรียบเทียบกับเครื่องมือเก่าๆ ที่พวกเขาคิดถึง โดยหนึ่งในนั้นกล่าวว่ามันทำให้นึกถึง CodeView ซึ่งเขาอยากใช้อีกครั้งมานาน และไม่ ปลั๊กอินมากมายของ Emacs หรือ vim ไม่ใช่สิ่งที่เทียบเท่าได้

คุณสมบัติหลักของ nnd Debugger

  • TUI (Terminal User Interface) ที่รวดเร็วและตอบสนองดี
  • ไม่ได้อิงกับ GDB หรือ LLDB แต่พัฒนาขึ้นมาใหม่เกือบทั้งหมด
  • ทำงานได้กับไฟล์ปฏิบัติการขนาดใหญ่ (ทดสอบแล้วกับ ClickHouse ขนาด 2.5 GB)
  • การทำงานแบบอะซิงโครนัสพร้อมแถบแสดงความคืบหน้า
  • แจกจ่ายเป็นไฟล์ปฏิบัติการเดี่ยวขนาด 6 MB โดยไม่ต้องพึ่งพาไลบรารีอื่น

ข้อจำกัดในปัจจุบัน

  • รองรับเฉพาะ Linux เท่านั้น
  • รองรับเฉพาะสถาปัตยกรรม x86-64 เท่านั้น
  • รองรับเฉพาะโค้ดเนทีฟ (C++, Rust, ฯลฯ)
  • มีเฉพาะ TUI เท่านั้น (ไม่มี REPL หรือ GUI)
  • ไม่รองรับการดีบักระยะไกล (ทำงานผ่าน SSH ได้)
  • รองรับเพียงโปรเซสเดียว (ไม่ติดตาม forks)
  • ไม่มีฟังก์ชันบันทึก/เล่นซ้ำ

สถานะของเครื่องมือดีบัก

การปรากฏตัวของ 'nnd' เน้นย้ำให้เห็นถึงการสนทนาที่กว้างขึ้นเกี่ยวกับสถานะของเครื่องมือดีบักบนแพลตฟอร์มต่างๆ ความคิดเห็นเผยให้เห็นถึงจุดที่เป็นปัญหาโดยเฉพาะสำหรับผู้ใช้ macOS โดยหนึ่งในนั้นบ่นว่าความแห้งแล้งของ macOS ยังคงดำเนินต่อไปเกี่ยวกับเครื่องมือดีบักที่มีคุณภาพ คนอื่นๆ กล่าวว่าพวกเขารอคอยการพอร์ต RAD Debugger มายัง Linux ซึ่งแสดงให้เห็นถึงความต้องการประสบการณ์การดีบักที่ดีขึ้นโดยทั่วไป

สำหรับนักพัฒนาที่สนใจทางเลือกอื่น การสนทนาในชุมชนชี้ให้เห็นถึงตัวเลือกหลายอย่างเช่น pwndbg (ซึ่งเพิ่มการปรับปรุงคุณภาพชีวิตให้กับ GDB/LLDB) และ cgdb (GDB TUI ที่ใช้ ncurses พร้อมกับการผูกคีย์แบบ vim)

ไฟล์ปฏิบัติการขนาด 6 MB ที่ไม่ต้องพึ่งพาไลบรารีอื่นทำให้ 'nnd' มีความน่าสนใจเป็นพิเศษสำหรับผู้ที่ต้องการทดลองใช้วิธีการดีบักใหม่ๆ โดยไม่ต้องตั้งค่าที่ซับซ้อน แม้ว่าจะยังอยู่ในช่วงการพัฒนาอย่างต่อเนื่องโดยมีคุณสมบัติพื้นฐานที่จำเป็นแล้ว ผู้สร้างกล่าวว่าพวกเขาใช้มันทุกวันและพบว่ามันมีประโยชน์มาก แม้ว่าจะยังไม่ได้รับการทดสอบอย่างกว้างขวางในสภาพแวดล้อมที่แตกต่างกัน

ในขณะที่เครื่องมือการพัฒนายังคงพัฒนาต่อไป 'nnd' แสดงถึงความพยายามที่มุ่งเน้นในการปรับปรุงส่วนสำคัญของกระบวนการทำงานของโปรแกรมเมอร์ที่มีนวัตกรรมค่อนข้างน้อยเมื่อเทียบกับด้านอื่นๆ เช่น ระบบการสร้างและเครื่องมือแก้ไขโค้ด

อ้างอิง: al13n321/nnd