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' .