dlv hugo 挂了

dlv hugo just hangs

我正在尝试使用名为 dlv 的 Go 调试器来学习 Hugo。我很困。之后:

go get -v github.com/gohugoio/hugo
cd $GOPATH/src/github.com/gohugoio/hugo
go  build -gcflags="-N -l"
dlv exec ./hugo -- -s /path/to/the/projectdir

挂起。按 Ctrl+C 正常运行 hugo。据我所知 dlv debug 不仅产生相同的行为,而且完全相同:生成的名为 debug 的二进制文件与我用 [=16= 构建的 hugo 完全相同].

dlv 启动了一些子进程,这些子进程会在一段时间后消失。 hugo 进程通过 pspidof hugo 可见,但 strace -ppidof hugo`` 报告 strace: attach: ptrace(PTRACE_ATTACH, ...): No such proce。之后查看,还在ps列表中,相同的pid。我猜是因为它在被追踪时处于 t 状态。

那我怎么看雨果运行?

同样的经历。但是它并没有挂起,只是需要很长时间才能到达 dlv 提示符。

检查您的内存使用情况(例如,如果您使用 Linux,则使用 mpstat 或 vmstat)。我有 16G 主内存和 16G 交换空间。在出现 dlv 提示符之前,我几乎所有的内存和大量的交换空间都被消耗掉了。在启动期间,任何正在播放的视频或音乐都会卡顿,并且在 dlv 准备就绪之前,PC 几乎无法使用。

Hugo 在这方面是相当大的应用程序。

嗯,我不会这样。 dlv 提示立即出现。我在软呢帽上,在过去一周左右的时间里一直在定期使用 hugo。

$ dlv exec ./hugo -- --cleanDestinationDir -s /path/to/blog/root/
Type 'help' for list of commands.
(dlv) c

                   | EN  
+------------------+----+
  Pages            | 25  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     | 11  
  Processed images |  0  
  Aliases          |  0  
  Sitemaps         |  1  
  Cleaned          |  0  

Total in 46 ms
Process 41032 has exited with status 0
$

Aaaa,它是 Windows 的 Linux 子系统!我从没想过这会有什么不同,但在 Jonah B 的回答“我在软呢帽上”之后,我在 Debian 机器上试了一下,它成功了。我很惊讶,因为 strace 在 WSL 上运行良好(实际上 github 关于提交报告的说明包括 strace)。我提交了这个 bug.