Skip to main content
0
JavaScriptProgramming Language

Debugger คืออะไร ? ทำไมจึงควรใช้แทน console.log() ไปดูกันเลย

เชื่อว่ามีเพื่อน ๆ หลาย ๆ คนที่ใช้ console.log() กันอยู่เป็นประจำ ไม่ว่าจะใช้ในการทดสอบว่า function ที่เราเขียนไปทำงานได้ไหม หรือเพื่อดูข้อมูลที่ดึงมาจาก api ต่าง ๆ เรียกว่าเป็นสิ่งที่อยู่คู่กับการเขียนโค้ดเลยทีเดียว แต่ในบทความนี้จะมานำเสนอเครื่องมืออีกตัวที่จะช่วยในการตรวจสอบการทำงานหรือแม้แต่หาบั๊กในโค้ดของเรา นั่นก็คือ Debugger นั่นเอง แล้วมันทำงานยังไง วิธีการใช้งานเป็นแบบไหน ไปดูกันเลย!

เขียนโดย
Thanawat Udchachon
Internship @ borntoDev

ข้อสังเกตของ console.log()

ในการใช้ console.log() แบบเดิมที่เราทำกันมา แน่นอนว่ามันก็สามารถแสดงค่าที่เราต้องการดูได้ตามที่ต้องการ แถมนักพัฒนา Node.JS กว่า 80% ก็ใช้วิธีนี้ในการ debug ระบบของพวกเขา จนเกิดเป็นคำเรียกวิธีการทำงานแบบนี้เล่น ๆ ขึ้นมาว่า CLTDD หรือ Console.Log Test-Driven Development กันเลยทีเดียว

 

แต่บางครั้งเมื่อระบบเรามีความซับซ้อนมากขึ้นการใช้ console.log ก็อาจสร้างความงุนงงกับเราได้เช่น การใช้ console.log จำนวนมากก็จะทำให้ในหน้า console ของเราเต็มไปด้วย log มากมายจนหา log ที่ต้องการไม่เจอซะอย่างงั้น หรือบางครั้งโค้ดของเรามีการทำงานกันเป็นขั้นตอนตามลำดับ เราก็ต้องมาเขียนอธิบายใน log แต่ละตัวอีกว่า log ไหนมาก่อนมาหลัง เพื่อตรวจสอบว่าโค้ดของเราทำงานตามลำดับที่เราต้องการไหม หรือถ้ารุนแรงขึ้นอีกก็คือการลืมเอา console.log ออกตอนนำโค้ดเราขึ้น production ก็เรียกได้ว่าเป็นคนที่เปิดเผยใช้ได้เลย มีการแสดง log ให้กับผู้ใช้งานเว็บไซต์ของเราด้วย ซึ่งก็คงจะไม่ดีเท่าไร

 

 

Debugger มันเจ๋งยังไง

Debugger เป็นฟีเจอร์หนึ่งของ Visual Studio Code ที่ก็มีหน้าที่ตามชื่อมันเลยคือช่วยในเรื่องของการหาบั๊กนั่นเอง ซึ่งก็รองรับทั้งที่ built-in มาแล้วอย่าง Node.js, JavaScript, TypeScript และภาษาอื่น ๆ เช่น PHP, C, C++, C#, Ruby และอื่น ๆ จะต้องมีการลง extension ในตัวของ Visual Studio Code เพิ่มเติม

 

โดยสิ่งที่ทำให้ Debugger นั้นโดดเด่นกว่าการใช้ console.log() แบบเดิมเลยก็คือ เราไม่ต้องมา log เพื่อดูข้อมูลในแต่ละส่วนเนื่องจากตัว Debugger จะมีการแสดงข้อมูลทุกอย่างให้เราเห็นได้เลยทีเดียว และอีกจุดเด่นของเขาเลยก็คือสิ่งที่เรียกว่า Breakpoint มันคือการจุดที่เราจะระบุว่าเมื่อโปรแกรมทำงานถึงบรรทัดนี้ ให้หยุดการทำงานก่อนเพื่อที่เราจะเช็คโค้ดของเราในส่วนนี้ทำงานได้อย่างที่เราต้องการไหม ทำได้โดยการคลิกที่หน้าเลขบรรทัดก็จะเกิดเป็นจุดสีแดงขึ้นมา

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

 

จากโค้ดนี้นะครับก็จะเป็นแค่ Javascript ธรรมดาที่มี

  • ตัวแปร msg เก็บข้อความว่า Hello world

  • ฟังก์ชัน log ข้อความของ msg ออกมา ชื่อว่า hello

  • เรียกใช้งานฟังก็ชัน hello

โดยจะมีการใส่ Breakpoint ไว้ 2 จุดคือส่วนของฟังกืชันและส่วนที่เรียกใช้งานฟังก์ชัน

จากนั้นเมื่อจะเริ่มทำการ debug ให้กดที่ไอค่อน Run and Debug ที่อยู่ด้านซ้าย หรือกด Ctrl+Shift+D แล้วก็กดปุ่ม Run and Debug

 

 

จากนั้น VSCode จะให้เราเลือก environment ในการ debug ในที่นี้เราก็เลือก Node.js ไปครับ

 

 

เราก็จะได้หน้าตาในลักษณะนี้ออกมาครับ

 

 

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

แล้วถ้าเรากด Continue หรือ F5 ก็จะเป็นการทำงานต่อจนไปถึง Breakpoint ถัดไป ในที่นี้คือไปที่ฟังก์ชันที่ถูกเรียกใช้งานซึ่งก็คือ hello()

 

ก็จะเห็นข้อมูลทางฝั่งซ้ายได้ว่ามีการเปลี่ยนแปลงด้วยไปตามการทำงานของ Breakpoint ถัดไปนั่นเอง

นี่ก็จะเป็นการ Debug โปรเจกต์ Javascript ทั่วไปนะครับ ซึ่งก็จะมีการ Debug โปรเจกต์อื่น ๆ ที่จะมีรายละเอียดต่างออกไปเล็กน้อย เช่น React ที่เราจะต้องรันโปรเจกต์ของเราก่อนที่จะทำการ debug และเลือก environment เป็น chrome หรือ browser ที่เพื่อน ๆ ต้องการครับ หรือถ้าหากเพื่อน ๆ ต้องการที่จะ debug บน browser อื่น ๆ ที่ไม่ได้มี built-in มาให้เช่น Firefox ก็สามารถติดตั้ง extension เพิ่มเติมได้นะครับ

 

Configure สำหรับการ Debug ในครั้งถัดไป

ในขั้นตอนก่อนที่เราจะกด Run and Debug เพื่อน ๆ อาจจะสังเกตเห็นว่าเราสามารถสร้างไฟล์ launch.json ขึ้นมาได้

 

ซึ่งมันเป็นการสร้างไฟล์ที่สำหรับการ customize configure สำหรับการ debug ครับ โดยเมื่อเรากดที่ create a launch.json file ตัว VSCode ก็จะให้เราเลือก environment ตามปกติครับ แล้วเราก็จะได้ไฟล์ launch.json นี้มา

 

โดยเจ้าไฟล์นี้มีหน้าที่ในการเก็บ configure สำหรับการ debug ในครั้งถัด ๆ ไปซึ่งเมื่อเราต้องการ debug VSCode ก็จะอ้างอิง configure ต่าง ๆ จากไฟล์นี้ครับ หากเราต้องการจะแก้ไขอะไรเราก็สามารถทำได้ในไฟล์นี้เลยเช่น เปลี่ยน type จาก chrome เป็น node หรือเปลี่ยน url เป็น url ที่โปรเจกต์เรารันอยู่อย่าง React จะรันบน localhost:3000 เราก็สามารถเปลี่ยนตรงนี้เป้น http://localhost:3000 เพื่อให้ตรงกับโปรเจกต์ของเราได้เลยครับ หรือถ้าหากเราต้องการจะเปลี่ยน configure ทั้งหมดเลยแบบไม่ต้องพิมพ์ใหม่เพื่อน ๆ ก็สามารถลบไฟล์ launch.json นี้ทิ้งแล้วกดสร้างใหม่ได้เลยครับ โดยไฟล์นี้จะถูกเก็บอยู่ในโฟลเดอร์ .vscode ใน root path ของโปรเจกต์เราครับ

 

 

สรุปสุดท้ายสิ่งที่ผู้อ่านจะได้รับ

การ debug ด้วย console.log() ก็ไม่ใช่เรื่องที่ผิดอะไรซะทีเดียวครับ เพียงแต่การนำเครื่องมืออื่น ๆ อย่าง debugger เข้ามาช่วยก็จะทำให้ผู้พัฒนาอย่างเรา ๆ สามารถทำงานได้ง่ายยิ่งขึ้น อีกทั้งยังหลีกเลี่ยงปัญหาบางอย่างที่อาจจะเกิดขึ้นได้จากการ log ข้อมูลออกมาจากที่ได้กล่าวไปข้างต้นได้ แต่ทั้งนี้ก็ขึ้นอยู่กับความถนัดและความเหมาะสมของแต่ละคนด้วยครับ หากเพื่อน ๆ สนใจ debugger ของ Visual Studio Code ก็สามารถศึกษาเพิ่มเติมได้ที่ลิงกืนี้ได้เลยครับผม https://code.visualstudio.com/docs/editor/debugging ว่าแล้ว ตัวผู้เขียนก็ขอตัวไปแก้บั๊กโค้ดของตัวเองต่อก่อนนะครับT_T

 

อ้างอิงจาก

  1. ลดละเลิกการเขียน Log เพื่อ Debug ระบบงานกันเถอะ, สืบค้นเมื่อ 30 มีนาคม 2565 จาก: https://www.somkiat.cc/stop-write-log-to-debugging/
  2. EP. 13 – มาใช้ VS Code Debugging Node.js และ React.js กันดีกว่า, สืบค้นเมื่อ 31 มีนาคม 2565 จาก: https://www.youtube.com/watch?v=AtftOIz81F0
  3. Debugging, สืบค้นเมื่อ 1 เมษายน 2565 จาก: https://code.visualstudio.com/docs/editor/debugging

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน
และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

BorntoDev

Author BorntoDev

BorntoDev Co., Ltd.

More posts by BorntoDev

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า