Can';由于出现错误,在GDB中设置断点时使用Golang;没有名为model/page.go的源文件;

Can';由于出现错误,在GDB中设置断点时使用Golang;没有名为model/page.go的源文件;,gdb,go,package,breakpoints,Gdb,Go,Package,Breakpoints,我正在尝试使用gdb调试Go程序,设置断点在所有包中正常工作,只有一个包除外。在我的src文件夹中,我有3个子文件夹,每个子文件夹包含包: 爬虫/ 爬虫 模型/ 佩奇,加油 乌鲁蒂尔斯/ urlutils.go 我无法在page.go的任何行上设置断点,因为这会导致以下错误: (gdb) break model/page.go:14 No source file named model/page.go. Make breakpoint pending on future shar

我正在尝试使用gdb调试Go程序,设置断点在所有包中正常工作,只有一个包除外。在我的src文件夹中,我有3个子文件夹,每个子文件夹包含包:

  • 爬虫/
    • 爬虫
  • 模型/
    • 佩奇,加油
  • 乌鲁蒂尔斯/
    • 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])
我不明白为什么只有这一个包裹会发生这种情况。“模型/页面”也是包含主功能的文件中的导入,在程序运行时使用,因此它必须在可执行文件中。有人有想法吗?

我找到了一个解决方案:

我需要在go build命令中添加一个标志:

go build -gcflags "-N -l" launch.go
这将禁用go编译器执行的代码优化,从而导致断点工作。路径是正确的,而且绝对路径不起作用


尽管如此,感谢Tomwide为我指明了方向。

相关:我也发现了这些问题,但我没有使用eclipse,项目的重建也不起作用(go build命令执行完整重建,并将所有内容打包到一个可执行文件中)。