Próximo: Reconstruindo informações de depuração, Acima: Instalando arquivos de depuração [Conteúdo][Índice]
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]