Contact
Line : comsiam
Contact
Line : comsiam

Google Gemini สามารถช่วยวิเคราะห์ Error ใน Source Code อ่าน Error Message และ Stack Trace ค้นหาไฟล์หรือ Function ที่เกี่ยวข้อง อธิบาย Root Cause และเสนอแนวทางแก้ไขได้ เหมาะกับทั้ง Python, JavaScript, PHP, SQL และโปรเจกต์หลายไฟล์
หัวใจสำคัญของการใช้ Gemini แก้ Error คือ อย่าเริ่มด้วยการขอให้ AI เขียนโค้ดใหม่ทั้งหมด แต่ควรให้ Gemini ตรวจสอบก่อนว่า Error เกิดตรงไหน เกิดจากอะไร และมีหลักฐานอะไรสนับสนุน จากนั้นค่อยสร้าง Minimal Fix และทดสอบว่า Error หายจริงโดยไม่ทำ Feature อื่นเสีย
Error คือข้อผิดพลาดที่เกิดขึ้นระหว่างการเขียนหรือการทำงานของโปรแกรม
Error อาจแบ่งได้หลายประเภท เช่น
นอกจากนี้ยังมี Logic Bug ที่โปรแกรมไม่แสดง Error แต่ให้ผลลัพธ์ผิด ซึ่งต้องใช้วิธีตรวจสอบต่างจาก Error ที่มีข้อความแจ้งเตือนชัดเจน
Gemini สามารถช่วยในกระบวนการ Debug ได้หลายส่วน เช่น
หากเป็นโปรเจกต์หลายไฟล์ ยังสามารถ Import Code Folder หรือ GitHub Repository เพื่อให้ Gemini ใช้ Codebase เป็น Context ได้ด้วย
ยิ่งข้อมูลครบ Gemini ยิ่งมีโอกาสวิเคราะห์ตรงจุด
ควรเตรียมอย่างน้อย
คัดลอกข้อความเต็ม
อย่าตัดบรรทัดที่เกี่ยวข้องออก
ส่ง Function หรือไฟล์ที่เกี่ยวข้อง
บอกว่าสิ่งที่ควรเกิดคืออะไร
บอกว่าสิ่งที่เกิดจริงคืออะไร
เช่น
OS: Windows 11
Python: 3.x
Framework: FastAPI
Database: PostgreSQL
หรือ
Node.js: 24
Framework: Express
Database: MySQL
หาก Error เกี่ยวข้องกับ Package ควรระบุ Version ด้วย
สามารถใช้ Prompt นี้เป็น Template ได้
“ช่วยวิเคราะห์ Error ใน Code นี้
Error Message:
[วาง Error]
Stack Trace:
[วาง Stack Trace]
Expected Behavior:
[สิ่งที่ควรเกิด]
Actual Behavior:
[สิ่งที่เกิดจริง]
Environment:
[Language / Framework / Version / OS]
Code:
[วางหรือแนบ Code]
ให้ทำตามลำดับ:
อย่า Rewrite Code ทั้งหมดหากไม่จำเป็น และแยกข้อเท็จจริงออกจากสมมติฐาน”
Prompt ลักษณะนี้ช่วยให้ Gemini คิดเป็นขั้นตอนแทนการกระโดดไปสร้าง Code ใหม่ทันที
Error Message มักบอกข้อมูลมากกว่าที่คิด
ตัวอย่าง JavaScript
TypeError: Cannot read properties of undefined (reading 'name')
ก่อนถามวิธีแก้ ให้ถาม
“อธิบาย Error นี้ก่อนว่าโปรแกรมกำลังพยายามทำอะไร และค่าใดน่าจะเป็น undefined”
Gemini ควรช่วยแยกได้ว่า
name
อาจไม่ใช่สิ่งที่เป็น undefined
แต่อาจเป็น Object ที่อยู่ก่อน .name
ตัวอย่าง
user.profile.name
สิ่งที่เป็น undefined อาจเป็น
user.profile
ดังนั้นต้อง Trace ค่ากลับไปยังจุดกำเนิด
Stack Trace มีข้อมูลว่า Error เดินทางผ่าน Function ใดบ้าง
ตัวอย่าง
TypeError: Cannot read properties of undefined
at getProfile (user.js:42:10)
at profileController (profile.js:18:5)
at processRequest (server.js:90:3)
ใช้ Prompt
“อธิบาย Stack Trace นี้จากจุดที่ Error เกิดจริง แล้วเรียง Call Chain ให้ฉัน”
อาจได้ Flow
processRequest()
↓
profileController()
↓
getProfile()
↓
Error
จากนั้นจึงเปิด user.js บรรทัด 42 เป็นจุดเริ่มตรวจ
สมมติ Code มี
const name = user.profile.name;
วิธีแก้ง่ายที่สุดดูเหมือนเป็น
const name = user?.profile?.name;
แต่ Optional Chaining อาจเพียงทำให้โปรแกรมไม่ Crash โดยไม่แก้สาเหตุที่แท้จริง
Root Cause อาจเป็น
profileดังนั้น Prompt ที่ดีกว่าคือ
“อย่าเพิ่งเพิ่ม Optional Chaining ตรวจว่าทำไม profile ถึงไม่มีค่าก่อน”
นี่คือความแตกต่างระหว่าง
แก้อาการ
กับ
แก้ต้นเหตุ
หาก Gemini เสนอ 3 สาเหตุ อย่าเลือกตามความรู้สึก
ให้ถามว่า
“สำหรับแต่ละ Root Cause บอกวิธีทดสอบที่เร็วที่สุดเพื่อพิสูจน์ว่าถูกหรือผิด”
ตัวอย่าง
| สาเหตุ | วิธีตรวจ |
|---|---|
API ไม่มี profile | Inspect Response |
| State ยังไม่โหลด | Log State ก่อน Render |
| Database ไม่มีข้อมูล | Query User Record |
วิธีนี้เปลี่ยน Gemini จากเครื่องมือเดาให้กลายเป็นผู้ช่วยออกแบบ Debugging Process
Log เป็นหลักฐานที่สำคัญมาก
ตัวอย่าง
10:30:01 User ID: 152
10:30:01 Loading profile
10:30:02 Profile result: null
10:30:02 TypeError
ส่งพร้อม Code แล้วถาม
“วิเคราะห์ Log นี้ร่วมกับ Code และหาจุดแรกที่ค่าผิดจากสิ่งที่ระบบคาดไว้”
ในตัวอย่างนี้ จุดสำคัญอาจไม่ใช่ TypeError แต่คือ
Profile result: null
ดังนั้นต้องหาว่าทำไม Query Profile จึงไม่คืนข้อมูล
เมื่อ Root Cause ยืนยันแล้ว ค่อยให้ Gemini สร้าง Patch
Prompt
“Root Cause ได้รับการยืนยันแล้วว่าเกิดจาก [สาเหตุ]
สร้าง Minimal Fix โดย:
Minimal Fix ตรวจสอบได้ง่ายกว่า Patch ขนาดใหญ่
ตัวอย่าง
user = {
"name": "Somchai"
}
print(user["email"])
จะเกิด
KeyError: 'email'
อย่ารีบถาม
“แก้ Code”
ให้ถาม
“ตรวจว่าเหตุใด email ไม่มีอยู่ใน Dictionary และ Requirement ของระบบควรบังคับให้มี Email หรือรองรับกรณีไม่มี Email”
เพราะการแก้สามารถต่างกัน
ต้องแก้ขั้นตอนสร้าง user
อาจใช้
email = user.get("email")
การเลือกวิธีแก้ต้องขึ้นกับ Requirement ไม่ใช่ Error Message เพียงอย่างเดียว
Error ยอดนิยมคือ
ReferenceError
TypeError
SyntaxError
ตัวอย่าง
console.log(username);
หาก username ยังไม่ประกาศ จะเกิด ReferenceError
สามารถถาม
“Trace Scope ของตัวแปร username และบอกว่าควรประกาศหรือส่งค่าเข้ามาจากส่วนใด”
สำหรับ Async Code ควรส่ง
ที่เกี่ยวข้องมาด้วย
เพราะ Error จำนวนมากเกิดจาก Timing ไม่ใช่ Syntax
ตัวอย่าง PHP Error ที่พบได้ เช่น
Prompt
“PHP Code นี้เกิด Error หลัง Submit Form
Trace ตั้งแต่ $_POST → Validation → Database → Response และระบุจุดที่ค่าหาย”
หากเป็น WordPress ควรบอกเพิ่ม
ที่เกี่ยวข้องกับปัญหา
SQL Error อาจเกิดจาก
ตัวอย่าง Prompt
“SQL Query นี้เกิด Error ให้ตรวจ Schema และ Query เทียบกันก่อน แล้วระบุ Column หรือ Alias ที่ผิด”
ควรส่ง
Schema
Query
Error
Expected Result
พร้อมกัน
หาก Query รันได้แต่ผลผิด ให้ระบุว่าเป็น Logic Error ไม่ใช่ SQL Syntax Error
API Error ควรส่งทั้ง Request และ Response
ตัวอย่าง
POST /api/users
Status:
400 Bad Request
Request
{
"name": "Somchai"
}
Response
{
"error": "email is required"
}
Prompt
“ตรวจ API Contract แล้วอธิบายว่าทำไม Request นี้ถึงได้ 400 และควรแก้ที่ Client หรือ Server”
คำถามว่า ควรแก้ฝั่งไหน สำคัญมาก
เพราะบางกรณี Backend ทำถูกแล้ว แต่ Frontend ส่งข้อมูลไม่ครบ
เวลาวิเคราะห์ Web/API Error ควรเริ่มจาก Status Code
Request ไม่ถูกต้อง
ยังไม่มี Authentication ที่ถูกต้อง
ยืนยันตัวตนแล้วแต่ไม่มี Permission
Resource หรือ Endpoint ไม่พบ
เกิดปัญหาฝั่ง Server
แต่ Status Code เป็นเพียงจุดเริ่มต้น
ต้องดู
ประกอบกัน
ตัวอย่าง Python
ModuleNotFoundError
หรือ Node.js
Cannot find module
อย่ารีบติดตั้ง Package แบบสุ่ม
ให้ Gemini ตรวจ
ตัวอย่าง Prompt
“ก่อนเสนอคำสั่งติดตั้ง Package ตรวจ dependency file และ import statement นี้ก่อนว่าชื่อ Package และ Module ตรงกันหรือไม่”
Code ที่เคยทำงานอาจ Error หลัง Upgrade
ตัวอย่าง
ควรส่ง Version เก่าและใหม่
Prompt
“Code นี้ทำงานบน Version A แต่ Error บน Version B ช่วยหา Breaking Change ที่เกี่ยวข้องกับ Error นี้”
สำหรับข้อมูล Version ที่เปลี่ยนเร็ว ควรตรวจ Documentation ปัจจุบันของ Library หรือ Framework ก่อนแก้จริง
หาก Error เชื่อมโยงหลาย Module ไม่ควรส่งไฟล์เดียว
สามารถใช้ Code Folder เพื่อให้ Gemini อ่าน Codebase
จากนั้น Prompt
“Error นี้เกิดจาก Feature Login
ค้นหาไฟล์ทั้งหมดที่เกี่ยวข้องกับ Login แล้ว Trace:
Frontend
→ API
→ Controller
→ Service
→ Database
ก่อนหา Root Cause”
การมอง Code ทั้ง Flow ช่วยลดการแก้ผิดไฟล์
Gemini Web App รองรับการ Import GitHub Repository เพื่อถามเกี่ยวกับ Codebase และช่วย Debug Issues
หลัง Import สามารถส่ง Error แล้วถาม
“จาก Repository ที่แนบมา ค้นหา Function ที่เกี่ยวข้องกับ Stack Trace นี้ และอธิบาย Root Cause ก่อนเสนอ Patch”
เหมาะกับ Project ที่มีไฟล์จำนวนมาก
แต่ต้องจำไว้ว่า Repository ที่ Import แล้ว ไม่ Sync การเปลี่ยนแปลงใหม่จาก GitHub อัตโนมัติ
หาก Code เปลี่ยนไปหลัง Import ต้องตรวจว่า Gemini กำลังวิเคราะห์ Version เดียวกับที่เกิด Error จริง
หลังแก้แล้ว ไม่ควรจบเพียง
“ตอนนี้รันได้”
ควรสร้าง Test ที่ป้องกัน Error เดิมกลับมา
Prompt
“สร้าง Regression Test สำหรับ Error นี้ โดย Test ต้อง Fail กับ Code Version เดิม และ Pass กับ Code ที่แก้แล้ว”
Workflow
Reproduce Error
↓
Create Failing Test
↓
Apply Fix
↓
Test Pass
↓
Run Full Test Suite
นี่เป็นวิธีที่ช่วยลด Bug เดิมกลับมาในอนาคต
หลัง Patch ให้ทดสอบอย่างน้อย
กรณีที่เคย Error ต้องผ่าน
การใช้งานปกติต้องไม่เสีย
ข้อมูลผิดปกติต้องจัดการได้
Feature ที่ใช้ Code เดียวกันต้องยังทำงาน
ถ้ามี Automated Test ให้รันทั้งหมด
Error หายไม่ได้หมายความว่า Patch ถูกต้องเสมอไป
นี่คือ Regression
ตัวอย่าง
ก่อนแก้
Login บาง Account Error
หลังแก้
ไม่ Error แต่ Login ทุก Account ไม่ผ่าน
การทำให้ Error Message หายไม่ถือว่าแก้สำเร็จ
ควรกลับไปถาม Gemini
“Patch นี้ทำให้ Error หายแต่ Expected Behavior ยังไม่เกิด ช่วยตรวจว่าการแก้ซ่อน Error หรือเปลี่ยน Business Logic ตรงไหน”
AI อาจเสนอ
try {
// code
} catch (error) {
console.log(error);
}
แต่การ Catch Error โดยไม่จัดการต้นเหตุอาจทำให้ปัญหาถูกซ่อน
ถามเพิ่มว่า
“Error นี้ควรถูก Catch ที่ Layer นี้จริงหรือควรปล่อยให้ Handler ระดับบนจัดการ”
Error Handling ควรมี Design ไม่ใช่แค่ครอบทุกอย่างด้วย try/catch
เช่น
const user = response.user || {};
อาจทำให้ Error หาย
แต่ถ้า response.user ต้องมีตาม API Contract การใช้ {} อาจซ่อนปัญหาของ Backend
ก่อนใช้ Default Value ควรถามว่า
ข้อมูลนี้ Optional จริงหรือไม่
Prompt
“เปรียบเทียบ Code ก่อนและหลัง Patch แล้วอธิบาย:
นี่เป็น Mini Code Review ที่ควรทำทุกครั้ง
การแก้ Error แบบเร็ว ๆ อาจทำให้ Security แย่ลง
ตัวอย่าง
Authentication Error
วิธีที่ผิดคือ
ปิด Authentication
Permission Error
วิธีที่ผิดคือ
ให้สิทธิ์ทุกคน
SSL Error
วิธีที่ผิดอาจเป็น
ปิด Certificate Verification
ควรถาม Gemini
“วิธีแก้นี้ลด Security หรือไม่ และมีแนวทางที่รักษา Security Model เดิมได้หรือไม่”
Log สามารถมี
ตัวอย่าง
Authorization: Bearer REAL_TOKEN
ควรเปลี่ยนเป็น
Authorization: Bearer [REDACTED]
ก่อนส่งให้ AI
สำหรับการ Debug งานของ comsiam ควรส่งเฉพาะ Log และ Code ที่จำเป็นต่อ Error และตัด Credential หรือข้อมูลผู้ใช้ออกก่อนทุกครั้ง
หลังได้วิธีแก้แล้ว ใช้ Prompt ต่อ
“อย่าแก้ Code เพิ่ม ให้ Review วิธีแก้ที่คุณเสนอเอง แล้วหาว่ามีสมมติฐานใดที่ยังไม่ได้พิสูจน์ มี Edge Case ใดตกหล่น และ Patch อาจสร้าง Regression ตรงไหน”
การให้ AI Critique คำตอบรอบแรกช่วยค้นหาจุดที่อาจถูกมองข้ามได้
แต่ยังไม่สามารถแทนการ Run Code จริงได้
Gemini อาจไม่มีข้อมูลครบเกี่ยวกับ
จึงอาจสร้างคำตอบที่ดูถูกต้องแต่ไม่ตรงกับ Environment จริง
Google เองระบุว่าฟีเจอร์ Generative Code ควรถูกใช้อย่างระมัดระวัง และควร Review และ Test Code เพื่อค้นหา Error, Bug และ Vulnerability ก่อนนำไปพึ่งพาใช้งาน
ข้อมูลไม่พอ
Stack Trace หาย
AI อาจใช้ API คนละ Version
ไม่รู้ว่าผลที่ถูกต้องคืออะไร
เพิ่ม Regression Risk
ซ่อน Root Cause
ซ่อน Data Problem
อาจสร้าง Breaking Change เพิ่ม
Error เดิมสามารถกลับมาได้
มีความเสี่ยงต่อ Production
ใช้ลำดับนี้ได้กับงานส่วนใหญ่
ทำให้เกิดซ้ำได้
เก็บข้อความเต็ม
ดูไฟล์และ Function
สร้างกรอบของปัญหา
หา Module ที่เกี่ยวข้อง
ยังไม่แก้ Code
พิสูจน์สาเหตุ
แก้เฉพาะจุด
ป้องกัน Error กลับมา
ตรวจผลกระทบส่วนอื่น
ตรวจว่าการแก้ไม่ลดความปลอดภัย
นำขึ้นระบบหลังตรวจครบ
แนวทางของ comsiam คือใช้ Gemini เพื่อช่วยลดพื้นที่ค้นหาและอธิบาย Root Cause แต่ไม่ใช้ AI เป็นตัวตัดสินเพียงอย่างเดียวว่าการแก้สำเร็จ ต้องพิสูจน์ด้วยการ Run และ Test จริง
“อธิบาย Error Message นี้ก่อน โดยยังไม่แก้ Code”
“Trace Stack นี้และบอกว่าไฟล์ใดควรตรวจเป็นอันดับแรก”
“สร้าง Root Cause ที่เป็นไปได้และแสดงหลักฐานของแต่ละข้อ”
“บอกวิธีพิสูจน์ Root Cause แต่ละข้อแบบเร็วที่สุด”
“Trace ค่านี้กลับไปยังจุดที่ถูกสร้างครั้งแรก”
“สร้างวิธีแก้ที่เปลี่ยน Code น้อยที่สุดหลังยืนยัน Root Cause”
“วิธีแก้นี้มีโอกาสทำ Feature ใดพัง”
“สร้าง Regression Test สำหรับ Error นี้”
“Patch นี้ทำให้ Validation, Authentication หรือ Permission อ่อนลงหรือไม่”
“Review Patch อีกครั้งและระบุสมมติฐานที่ยังไม่ได้พิสูจน์”
ได้ Gemini สามารถช่วยอ่าน Error Message, Stack Trace และ Source Code เพื่อวิเคราะห์ปัญหาและเสนอวิธีแก้ได้
ควรส่ง เพราะ Stack Trace ช่วยระบุ Function ไฟล์ และ Call Chain ที่เกี่ยวข้องกับ Error ทำให้การวิเคราะห์มี Context มากขึ้น
ได้ สามารถใช้ Code Folder หรือ Import GitHub Repository เพื่อให้ Gemini วิเคราะห์ Codebase หลายไฟล์และช่วย Debug ปัญหาได้
โดยทั่วไปไม่ควรเริ่มด้วยการ Rewrite ทั้งหมด ควรหา Root Cause ก่อน แล้วสร้าง Minimal Fix เพื่อลดผลกระทบต่อ Code ส่วนอื่น
ไม่เสมอ ต้องตรวจว่า Expected Behavior กลับมาทำงานและ Feature อื่นไม่เกิด Regression
ไม่ควรถือว่าถูกต้อง 100% Google แนะนำให้ Review และ Test Code ที่ Generative AI แนะนำเพื่อหาข้อผิดพลาด Bug และ Vulnerability ก่อนนำไปใช้จริง
วิธีใช้ Gemini แก้ Error ในโค้ดให้ตรงจุดควรเริ่มจาก Error Message → Stack Trace → Expected/Actual Behavior → Root Cause → Hypothesis Test → Minimal Fix → Regression Test
อย่ารีบให้ Gemini Rewrite Code หรือเพิ่ม try/catch เพียงเพื่อทำให้ Error Message หาย เพราะอาจเป็นการซ่อนต้นเหตุจริง
หากเป็น Codebase หลายไฟล์ สามารถใช้ Code Folder หรือ GitHub Repository เพื่อช่วย Trace ความสัมพันธ์ของ Function และ Module ได้ และ Google ระบุว่า GitHub Integration ของ Gemini สามารถใช้ช่วย Debug Issues ใน Codebase ได้โดยตรง
สุดท้าย Code ที่ AI แนะนำทุกครั้งต้อง Run, Review และ Test ใน Environment จริงก่อนใช้งาน โดยเฉพาะระบบ Production เพราะการแก้ Error หนึ่งจุดสามารถสร้าง Regression, Security Issue หรือ Behavior ใหม่ในส่วนอื่นของระบบได้