Предположительно, двоичный файл имеет отсоединенную отладочную информацию ; если gdb
может найти это без какой-либо конкретной конфигурации, это должно быть в одном из
/usr/lib/debug/.build-id
; .debug
рядом с двоичным файлом; .debug
в /frs/alg/alg/bin/.debug
; .debug
в /usr/lib/debug/frs/alg/alg/bin
. Двоичный файл может иметь отладочную ссылку, указывающую на отсоединенную информацию; ищите раздел .gnu_debuglink
в двоичном файле. Чтобы найти его сборку -с идентификатором (, если есть ), найдите раздел с именем .note.gnu.build-id
или что-то в этом роде.
Причина, по которой вы не видите каталоги, созданные с помощью вашего скрипта, заключается в том, что вы ищете CLOSE_WRITE
вместо CREATE
сIS_DIR
:
inotifywait. # Terminal 1
Setting up watches.
Watches established.
./ CREATE,ISDIR zz
mkdir zz # Terminal 2
Теперь, поскольку CREATE
также может применяться к файлам, вам необходимо проверить тип элемента в процессе принятия решения:
#!/bin/bash
watchDir=/mnt/watched
inotifywait -qre CLOSE_WRITE,CREATE --format $'%e\t%w%f' --monitor "$watchDir" |
while IFS=$'\t' read -r events item
do
if [[ -d "$item" ]]
then
echo "New directory '$item'"
elif [[ "$events" =~ CLOSE_WRITE ]]
then
if [[ -f "$item" ]]
then
echo "New file '$item'"
elif [[ -e "$item" ]]
then
echo "New unknown item '$item'"
fi
fi
done
Этот код не будет работать для имен файлов или каталогов, которые содержат символы новой строки(touch $'break\nfile'
)или начинаются с одного или нескольких символов табуляции (touch $'\ttabbed'
), так как inotifywait
нельзя использовать строку формата, содержащую нулевой символ(\000
). Существует также небольшое состояние гонки, когда событие может сработать, но цель может быть удалена или даже заменена до того, как цикл сможет быть обработан и тип цели оценен.