Невозможно установить точку останова в GDB с Golang из-за ошибки "нет исходного файла с именем model/page.go"

Я пытаюсь отладить Go-программу, используя gdb, и установка точек останова работает нормально во всех пакетах, кроме одного. В моей папке src есть 3 подпапки, каждая из которых содержит пакеты:

  • гусеничный трактор/
    • crawler.go
  • модель /
    • page.go
  • urlutils /
    • urlutils.go

Я не могу установить точку останова в page.go ни в одной строке, так как она дает мне следующую ошибку:

(gdb) break model/page.go:14
No source file named model/page.go.
Make breakpoint pending on future shared library load? (y or [n])

Я не понимаю, почему это происходит только с этим одним пакетом. "модель / страница" также является импортом в файл, который содержит основную функцию и используется при запуске программы, поэтому он должен находиться в исполняемом файле. У кого-нибудь есть идея?

1 ответ

Решение

Я нашел решение:

Мне нужно было добавить флаг в мою команду go build:

go build -gcflags "-N -l" launch.go

Это отключает оптимизацию кода, выполняемую компилятором go, что приводит к работе моей точки останова. Пути были правильными, а также абсолютный путь не работал.

Тем не менее, спасибо tomwilde за то, что указал мне направление.

Другие вопросы по тегам