Lập trình Go 22/09/2026 6 phút

Gỡ lỗi từ xa với Delve trong Go: gắn debugger vào tiến trình đang chạy

Log chỉ cho biết cái bạn nghĩ để in; có bug cần xem trạng thái đầy đủ tại một điểm — mọi biến, stack, bước từng dòng. Delve là debugger cho Go, và chế độ headless cho phép server chạy cạnh tiến trình (kể cả trong container) còn client kết nối qua mạng. Đo thật: breakpoint, xem biến cục bộ và từ xa qua :2345.

Lập trình Go 22/09/2026 6 phút

Core dump và phân tích sự cố trong Go: mổ xẻ tiến trình đã chết

Panic trace cho biết crash ở đâu nhưng mất trạng thái biến khi tiến trình chết. Core dump là ảnh chụp toàn bộ bộ nhớ lúc crash — mổ xẻ nó bằng dlv core để điều tra sau sự cố (post-mortem). Đo thật trong Go: bật GOTRACEBACK=crash sinh core dump 40 MB, dlv core dựng lại ngăn xếp tới đúng dòng gây lỗi dù tiến trình đã chết.

Lập trình Go 22/09/2026 6 phút

Phát hiện rò rỉ goroutine sản xuất trong Go: số goroutine tăng mãi không giảm

Goroutine kẹt vĩnh viễn (chờ channel không ai gửi) không thoát và GC không dọn được — mỗi request rò một cái, số goroutine tăng mãi tới khi hết RAM. Đo thật trong Go: 1000 request rò 1000 goroutine (NumGoroutine 1→1001 không giảm), và pprof goroutine chỉ đúng chỗ kẹt tại một dòng code.

Lập trình Go 22/09/2026 6 phút

Đọc panic trace và runtime.Stack trong Go: mổ xẻ từng dòng để chẩn đoán crash

Panic trace không phải chữ đỏ đáng sợ mà là bản đồ đầy đủ để tìm bug. Bài này mổ xẻ từng phần: số hiệu goroutine, trạng thái [running]/[chan receive]/[sync.Mutex.Lock], ngăn xếp đọc từ đâu, tham số hex, tín hiệu SIGSEGV — và dùng runtime.Stack chụp mọi goroutine. Đo thật trong Go 1.23.