Capítulo 12. Dicas

Índice

12.1. Compilar sob UTF-8
12.2. Conversão UTF-8
12.3. Dicas para Depuração

Por favor leia também as páginas perspicazes ligadas em Notas sobre Debian por Russ Allbery (muito tempo desenvolvedor Debian) que tem as melhores práticas para tópicos avançados de empacotamento.

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

Se os documentos do autor estão codificados em esquemas de codificação antigos, converte-los para UTF-8 é uma boa ideia.

Use o comando iconv do pacote libc-bin para converter a codificação de ficheiros de texto simples.

 $ 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
    • Atualize o ficheiro /etc/security/limits.conf para incluir o seguinte:

      * soft core unlimited
    • ulimit -c unlimited in ~/.bashrc
    • ulimit -a para verificar
    • Pressione Ctrl-\ ou kill -ABRT 'PID' para criar um ficheiro de despejo de núcleo
  • gdb - O GNU Debugger

    • info gdb
    • Debugging with GDB em /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 - Verificação de sintaxe de um script Shell
  • sh -x script.sh - Rastreio a um script Shell
  • python3 -m py_compile script.py - Verificação de sintaxe de um script Python
  • python3 -mtrace --trace script.py - Rastreio a um script Python
  • perl -I ../libpath -c script.pl - Verificação de sintaxe de um script Perl
  • perl -d:Trace script.pl - Rastreio a um script Perl

    • 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
[Dica]Dica

O comando script grava resultados de consola.

[Dica]Dica

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

[Dica]Dica

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.

[Dica]Dica

Os comandos rlwrap e rlfe adicionam capacidades de edição de linhas com suporte de histórico a quaisquer comandos interativos. Ex. rlwrap dash -i' .