Невозможно установить точку останова в 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 за то, что указал мне направление.