Глава 11. Полезные советы

Содержание

11.1. Сборка с использованием кодировки UTF-8
11.2. Преобразование в кодировку UTF-8
11.3. Hints for Debugging

Please also read insightful pages linked from «Notes on Debian» by Russ Allbery (long time Debian developer) which have best practices for advanced packaging topics.

Локалью по умолчанию в сборочном окружении является C.

Некоторые программы, такие как функци read из Python3, изменяют своё поведение в зависимости от текущей локали.

Adding the following code to the debian/rules file ensures building the program under the C.UTF-8 locale.

LC_ALL := C.UTF-8
export LC_ALL

If upstream documents are encoded in old encoding schemes, converting them to UTF-8 is a good idea.

Use the iconv command in the libc-bin package to convert the encoding of plain text files.

 $ iconv -f latin1 -t utf8 foo_in.txt > foo_out.txt

Используйте w3m(1) для преобразования HTML-файлов в обычные текстовые файлы в кодировке UTF-8. При выполнении преобразования убедитесь, что у вас используется локаль UTF-8.

 $ LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 \
        -cols 70 -dump -no-graph -T text/html \
        < foo_in.html > foo_out.txt

Запустите эти сценарии в цели override_dh_* файла debian/rules.

Когда вы сталкиваетесь с проблемами сборки или дампом памяти созданных двоичных программ, вам необходимо разрешить их самостоятельно. Это называется отладкой.

Это слишком обширная тема, чтобы обсуждать её в настоящем руководстве. Поэтому позвольте просто привести несколько ссылок и полезных советов по использованию типичных инструментов отладки.

  • Wikipedia: «core dump»

    • «man core»
    • Update the «/etc/security/limits.conf» file to include the following:

      * soft core unlimited
    • «ulimit -c unlimited» in ~/.bashrc
    • «ulimit -a» to check
    • Press Ctrl-\ or «kill -ABRT 'PID'» to make a core dump file
  • gdb — отладчик GNU

    • «info gdb»
    • «Debugging with GDB» in /usr/share/doc/gdb-doc/html/gdb/index.html
  • strace — трассировка системных вызовов и сигналов

    • Используйте сценарий strace-graph из каталога /usr/share/doc/strace/examples/, чтобы иметь удобную визуализацию в виде дерева
    • «man strace»
  • ltrace - трассировка библиотечных вызовов

    • «man ltrace»
  • «sh -n script.sh» - Syntax check of a Shell script
  • «sh -x script.sh» - Trace a Shell script
  • «python3 -m py_compile script.py» - Syntax check of a Python script
  • «python3 -mtrace --trace script.py» - Trace a Python script
  • «perl -I ../libpath -c script.pl» - Syntax check of a Perl script
  • «perl -d:Trace script.pl» - Trace a Perl script

    • Install the libterm-readline-gnu-perl package or its equivalent to add input line editing capability with history support.
  • lsof — вывод списка файлов, открытых процессами

    • «man lsof»
[Подсказка]Подсказка

The script command records console outputs.

[Подсказка]Подсказка

The screen and tmux commands used with the ssh command offer secure and robust remote connection terminals.

[Подсказка]Подсказка

A Python- and Shell-like REPL (=READ + EVAL + PRINT + LOOP) environment for Perl is offered by the reply command from the libreply-perl (new) package and the re.pl command from the libdevel-repl-perl (old) package.

[Подсказка]Подсказка

The rlwrap and rlfe commands add input line editing capability with history support to any interactive commands. E.g. «rlwrap dash -i'» .