Dlv Hugo просто зависает

Я пытаюсь изучить Hugo с помощью отладчика Go под названием dlv. И я довольно застрял. После:

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 точно такой же, как hugo, который я создал с go build -gcflags="-N -l".

dlv запускает ряд дочерних процессов, которые через некоторое время исчезают. Процесс hugo виден через ps и pidof hugo, но strace -ppidof Hugo`` сообщает strace: attach: ptrace(PTRACE_ATTACH, ...): No such proce. Проверив после, он все еще находится в списке ps, тот же pid. Я бы предположил, потому что он находится в состоянии t, поскольку он отслеживается.

Как я мог тогда смотреть, как Хьюго бежит?


person chx    schedule 24.02.2018    source источник
comment
Потому что я хочу учиться и стать разработчиком Хьюго (возможно). Лучший способ изучить новый фреймворк — пройти через него.   -  person chx    schedule 24.02.2018


Ответы (3)


Хм, у меня не бывает. Приглашение dlv появляется сразу. Я на Fedora, регулярно пользуюсь 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
$
person Jonah Benton    schedule 24.02.2018

Ааааа это подсистема Linux для Windows! Я никогда не думал, что это будет иметь значение, но после ответа Джона Б. «Я на Fedora» я попробовал это на коробке Debian, и это сработало. Я удивлен, потому что strace отлично работает на WSL (на самом деле инструкции github по подаче отчета включают strace). Я зарегистрировал эту ошибку.

person chx    schedule 25.02.2018
comment
Отличный отчет. Я не слышал о многих подобных регрессиях в WSL, здорово узнать об этом. - person Jonah Benton; 25.02.2018

Здесь тот же опыт. Однако это не зависает, просто требуется значительное время, чтобы добраться до подсказки dlv.

Проверьте использование вашей памяти (например, с помощью mpstat или vmstat, если вы работаете в Linux). У меня 16G основной памяти и 16G подкачки. До тех пор, пока не будет достигнуто приглашение dlv, почти вся моя память и значительный объем подкачки потребляются. Во время запуска любое воспроизведение видео или музыки заикается, и ПК практически непригоден для использования, пока не будет готов dlv.

В этом отношении Hugo — довольно большое приложение.

person Frank    schedule 24.02.2018
comment
Это не то, что я вижу. Это не то, что показывает strace: dlv порождает шесть процессов, я просмотрел их с помощью strace -p, половина из них ничего не делает, половина находится в цикле ожидания фьютекса. - person chx; 24.02.2018