Próximo: , Acima: Instalando arquivos de depuração   [Conteúdo][Índice]


17.1 Informações de depuração separadas

O problema com informações de depuração é que elas ocupam uma quantidade considerável de espaço em disco. Por exemplo, informações de depuração para a GNU C Library pesam mais de 60 MiB. Assim, como usuário, manter todas as informações de depuração de todos os programas instalados geralmente não é uma opção. No entanto, a economia de espaço não deve vir ao custo de um impedimento à depuração — especialmente no sistema GNU, o que deve tornar mais fácil para os usuários exercerem sua liberdade de computação (veja Distribuição GNU).

Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism that allows users to get the best of both worlds: debugging information can be stripped from the binaries and stored in separate files. GDB is then able to load debugging information from those files, when they are available (veja Separate Debug Files em Debugging with GDB).

The GNU distribution takes advantage of this by storing debugging information in the lib/debug sub-directory of a separate package output unimaginatively called debug (veja Pacotes com múltiplas saídas). Users can choose to install the debug output of a package when they need it. For instance, the following command installs the debugging information for the GNU C Library and for GNU Guile:

guix install glibc:debug guile:debug

GDB must then be told to look for debug files in the user’s profile, by setting the debug-file-directory variable (consider setting it from the ~/.gdbinit file, veja Startup em Debugging with GDB):

(gdb) set debug-file-directory ~/.guix-profile/lib/debug

From there on, GDB will pick up debugging information from the .debug files under ~/.guix-profile/lib/debug.

Below is an alternative GDB script which is useful when working with other profiles. It takes advantage of the optional Guile integration in GDB. This snippet is included by default on Guix System in the ~/.gdbinit file.

guile
(use-modules (gdb))
(execute (string-append "set debug-file-directory "
                        (or (getenv "GDB_DEBUG_FILE_DIRECTORY")
                            "~/.guix-profile/lib/debug")))
end

In addition, you will most likely want GDB to be able to show the source code being debugged. To do that, you will have to unpack the source code of the package of interest (obtained with guix build --source, veja Invocando guix build), and to point GDB to that source directory using the directory command (veja directory em Debugging with GDB).

The debug output mechanism in Guix is implemented by the gnu-build-system (veja Sistemas de compilação). Currently, it is opt-in—debugging information is available only for the packages with definitions explicitly declaring a debug output. To check whether a package has a debug output, use guix package --list-available (veja Invocando guix package).

Read on for how to deal with packages lacking a debug output.


Próximo: Reconstruindo informações de depuração, Acima: Instalando arquivos de depuração   [Conteúdo][Índice]