У меня зависает завершение вкладок, можно ли использовать strace, чтобы узнать, что происходит?

Solución usandojoin:

join file1.txt file2.txt -e null -o auto -a 1 2>/dev/null

No está claro en las páginas man, pero la opción -esolo funciona con -o.

2
18.06.2019, 11:00
1 ответ

(Предположим, вы используете Linux. )Используйте echo $$, чтобы получить PID вашей текущей оболочки. Откройте новый терминал и запустите:

sudo strace -fp <PID> -o log

Вернитесь к старой оболочке, попробуйте автодополнение с помощью табуляции. Затем переключитесь на новый терминал и нажмите CtrlC для завершения strace. Вывод будет в файле с именем log. Вы также можете запустить команду straceв той же оболочке (, сначала аутентифицируясь в sudoдля кэширования учетных данных ):

.
sudo -v
sudo strace -fp $$ -o log &

А затем попробуйте автодополнение с помощью табуляции. Чтобы убить его, fg, а затем CtrlC .

Однако, если вы используете bash, возможно, лучше сначала попытаться получить от него подробные отладочные данные:

set -o functrace xtrace
PS4=' ${BASH_SOURCE}:$FUNCNAME:$LINENO: '

А затем попробуйте автодополнение с помощью табуляции. Вы должны указать все, что функция завершения выполняет в последующем выводе. Например:

bash-5.0$ set -o xtrace functrace
bash-5.0$ PS4=' ${BASH_SOURCE}:${FUNCNAME}:$LINENO: '
+ PS4=' ${BASH_SOURCE}:${FUNCNAME}:$LINENO: '
bash-5.0$ sudo su  /usr/local/share/bash-completion/bash_completion:_completion_loader:3: local cmd=sudo
 /usr/local/share/bash-completion/bash_completion:_completion_loader:5: __load_completion sudo
 /usr/local/share/bash-completion/bash_completion:__load_completion:2: dirs=(${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions)
 /usr/local/share/bash-completion/bash_completion:__load_completion:2: local -a dirs
 /usr/local/share/bash-completion/bash_completion:__load_completion:3: local 'OIFS=
' IFS=: dir cmd=sudo compfile
 /usr/local/share/bash-completion/bash_completion:__load_completion:2021: for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share}
 /usr/local/share/bash-completion/bash_completion:__load_completion:5: dirs+=($dir/bash-completion/completions)
 /usr/local/share/bash-completion/bash_completion:__load_completion:2021: for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share}
 /usr/local/share/bash-completion/bash_completion:__load_completion:5: dirs+=($dir/bash-completion/completions)
 /usr/local/share/bash-completion/bash_completion:__load_completion:7: IFS='
'
 /usr/local/share/bash-completion/bash_completion:__load_completion:9: [[ /usr/local/share/bash-completion/bash_completion == */* ]]
3
27.01.2020, 22:08

Теги

Похожие вопросы