Что делает "/fi/a" в этой команде/скрипте sed?

(в дополнение к другим хорошим ответам)

В современных Linux (и многих Unix -подобных )системах отладочная информация (, включая метаданные -о типах символов, расположении исходного кода, типах переменных и т. д. и т. д., )находится в формате DWARF и находится внутри ELF исполняемого файла (или разделяемых библиотек ELF ), когда он скомпилирован с некоторой -gопцией. Я рекомендую компилировать программы для отладки с помощью -g3 -O0и, возможно, -fno-inline, если используется недавний GCC ; однако с помощью GCC вы даже можете скомпилировать информацию как об оптимизации, так и об отладке, например. с -O2 -g1, хотя в этом случае отладочная информация может быть немного «нечеткой» (, это может немного помочь отловить некоторые непослушные Heisenbugs).

Вполне разумно не помещать эту информацию в основные файлы, потому что у вас может быть много разных основных файлов (представьте себе широко используемое программное обеспечение, в котором множество пользователей делают отчеты об ошибках, большинство из них с coreдамп )для того же исполняемого файла. Так же core (5)файлы выгружаются ядром,который не должен заботиться о существовании разделов DWARF в исполняемых файлах elf (5)(, поскольку эти разделы не отображаются в виртуальное адресное пространство неисправного процесса , который сбрасывал ядро ​​на какой-то сигнал (7)). Существует даже возможность помещения отладочной информации в отдельные файлы (вне исполняемого ).

Кстати, GDB может быть болезненно использован для отладки дампов ядра для исполняемых файлов без какой-либо отладочной информации. Но тогда вы практически выполняете отладку на уровне машинного кода (, а не на символическом уровне, предоставляемом языками программирования и их компиляторами ).

1
08.12.2019, 18:54
1 ответ

Если вы хотите сопоставить fiв одной строке, вы можете привязать ее к^(началу строки )и$(концу строки ). Есть также некоторые ненужные символы пробела до и после \nв вашей строке, которые вы можете удалить.

sudo sed -i.bak '/^fi$/a #xrdp multiple users configuration\nxfce-session\n' /etc/xrdp/startwm.sh
1
27.01.2020, 23:15

Теги

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