Golang на VS Code и обнаружение DeadLock

Осваиваю язык Golang по видеоурокам. У лектора используется IDE от JetBrains и при изучении темы посвящённой deadlock в следующем коде у него выводится ошибка:

    package main

import (
    "fmt"
    "math/rand"
    "sync"
    "time"
)

type Worker struct {
    id  int
    die chan bool
    *sync.WaitGroup
}

func (w *Worker) DoWork() <-chan string {
    c := make(chan string)
    go func() {
        for {
            select {
            case <-time.After(time.Duration(rand.Intn(1000)) * time.Millisecond):
                c <- fmt.Sprintf("Worker #%d, do some work - %d", w.id, rand.Intn(100))
            case <-w.die:
                fmt.Println("Finish work")
                return
            }
        }
    }()
    return c

}
func (w *Worker) Die() {
    fmt.Printf("Worker die %d\n", w.id)
    w.die <- true
    w.Done()
    close(w.die)
}
func NewWorker(id int, wg *sync.WaitGroup) *Worker {

    die := make(chan bool,1)  // <-- Если канал не буферизированный, то будет deadlock
    wg.Add(1)
    return &Worker{id, die, wg}
}

func main() {
    var wg sync.WaitGroup

    w1 := NewWorker(1, &wg)
    w2 := NewWorker(2, &wg)

    res1 := w1.DoWork()
    res2 := w2.DoWork()

    for i := 0; i < 6; i++ {
        fmt.Println(<-res1)
        fmt.Println(<-res2)
    }
    w1.Die()
    w2.Die()

    wg.Wait()
}

fatal error: all goroutines are asleep - deadlock!

У меня же на VS Code такая ошибка не выходит. Просто поток перестаёт отвечать и всё. Как включить отображение подобной ошибки на VS Code?

golang:
go version go1.17.2 windows/amd64
VS code:
Версия: 1.62.2 (user setup)
Фиксация: 3a6960b964327f0e3882ce18fcebd07ed191b316
Дата: 2021-11-11T20:56:38.428Z
Electron: 13.5.2
Chrome: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
ОС: Windows_NT x64 10.0.19043

Ответы (1 шт):

Автор решения: Pak Uula

Ответ в том, что ТС в VS Code запускал программу кнопкой F5, то есть в отладчике. Отладчик доходит до фатальной ошибки и останавливается. ТС не обратил внимание, что на панели отладки показывается остановка программы. Если нажать кнопку "Продолжить", то программа выведет сообщение об ошибке и завершится.

Если же запустить программу по Ctrl-F5, то программа будет запущена без отладки и дойдёт до конца (т.е. сообщения о дедлоке) без остановок.

→ Ссылка