Chapter 11. Dicas

Table of Contents

11.1. Compilar sob UTF-8
11.2. Conversão 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.

O locale predefinido do ambiente de compilação é C.

Alguns programas como a função read do Python3 mudam o seu comportamento dependendo do locale.

Adicionar o seguinte código ao ficheiro debian/rules assegura a compilação do programa sob o locale C.UTF-8.

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

Use w3m(1) para converter de ficheiros HTML para ficheiros de texto simples UTF-8. Quando você faz isto, certifique-se de executar sob locale 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

Corra estes scripts no alvo override_dh_* do ficheiro debian/rules.

Quando você de defronta com problemas de compilação ou despejos de núcleo dos programas binário gerados, você tem que resolve-los você próprio. Isso é depuração (debug).

Este é um tópico muito profundo para se descrever aqui. Assim, vamos apenas listar alguns ponteiros e dicas para algumas ferramentas de depuração típicas.

  • 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 - O GNU Debugger

    • “info gdb”
    • “Debugging with GDB” in /usr/share/doc/gdb-doc/html/gdb/index.html
  • strace - Rastreio a chamadas e sinais do sistema

    • Use o script strace-graph encontrado em /usr/share/doc/strace/examples/ para criar uma bonita vista em árvore
    • “man strace”
  • ltrace - Rastreio a chamadas de biblioteca

    • “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

    • Instale o pacote libterm-readline-gnu-perl ou o seu equivalente para adicionar capacidade de edição de linhas com suporte de histórico.
  • lsof - Lista ficheiros abertos pelos processos

    • “man lsof”
[Tip]Tip

O comando script grava resultados de consola.

[Tip]Tip

Os comandos screen e tmux usados com o comando ssh oferecem terminais de ligação remota seguros e robustos.

[Tip]Tip

Um ambiente Python- e Shell-like REPL (=READ + EVAL + PRINT + LOOP) para Perl é oferecido pelo comando reply do pacote (novo) libreply-perl e o comando re.pl do pacote (velho) libdevel-repl-perl.

[Tip]Tip

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