summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi14
-rw-r--r--gnu/packages/gdb.scm7
-rw-r--r--gnu/system/shadow.scm8
3 files changed, 28 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 7beb2c3f27..09229172b5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -29919,6 +29919,20 @@ GDB}):
From there on, GDB will pick up debugging information from the
@file{.debug} files under @file{~/.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
+@file{~/.gdbinit} file.
+
+@example
+guile
+(use-modules (gdb))
+(execute (string-append "set debug-file-directory "
+ (or (getenv "GDB_DEBUG_FILE_DIRECTORY")
+ "~/.guix-profile/lib/debug")))
+end
+@end example
+
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 @code{guix build
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 830121751f..11e0bb3e76 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -117,6 +118,12 @@
("dejagnu" ,dejagnu)
("pkg-config" ,pkg-config)
,@(if (hurd-target?) `(("mig" ,mig)) '())))
+ ;; TODO: Add support for the GDB_DEBUG_FILE_DIRECTORY environment variable
+ ;; in GDB itself instead of relying on some glue code in the Guix-provided
+ ;; .gdbinit file.
+ (native-search-paths (list (search-path-specification
+ (variable "GDB_DEBUG_FILE_DIRECTORY")
+ (files '("lib/debug")))))
(home-page "https://www.gnu.org/software/gdb/")
(synopsis "The GNU debugger")
(description
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index a69339bc07..8c76bc2b11 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -162,7 +163,12 @@ XTerm*utf8: always
XTerm*metaSendsEscape: true\n"))
(gdbinit (plain-file "gdbinit" "\
# Tell GDB where to look for separate debugging files.
-set debug-file-directory ~/.guix-profile/lib/debug
+guile
+(use-modules (gdb))
+(execute (string-append \"set debug-file-directory \"
+ (or (getenv \"GDB_DEBUG_FILE_DIRECTORY\")
+ \"~/.guix-profile/lib/debug\")))
+end
# Authorize extensions found in the store, such as the
# pretty-printers of libstdc++.