guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch core-updates updated: system: Modify GDB skeleton to find debug f


From: guix-commits
Subject: branch core-updates updated: system: Modify GDB skeleton to find debug files for any profile.
Date: Mon, 24 Aug 2020 09:58:02 -0400

This is an automated email from the git hooks/post-receive script.

apteryx pushed a commit to branch core-updates
in repository guix.

The following commit(s) were added to refs/heads/core-updates by this push:
     new 720a4ad  system: Modify GDB skeleton to find debug files for any 
profile.
720a4ad is described below

commit 720a4adc91c632e097d9e064ce8e95617cf76fb0
Author: Maxim Cournoyer <maxim.cournoyer@gmail.com>
AuthorDate: Sun Aug 16 01:24:05 2020 -0400

    system: Modify GDB skeleton to find debug files for any profile.
    
    Instead of hard coding the debug directory to that of the user profile, use
    Guile scripting in combination with a new search path specification on GDB 
to
    specify the debug file directories.
    
    * gnu/packages/gdb.scm (gdb-9.1): Add a search path specification for the
    GDB_DEBUG_FILE_DIRECTORY environment variable.
    * gnu/system/shadow.scm (default-skeletons)[gdbinit]: Derive the value of
    DEBUG-FILE-DIRECTORY via the GDB_DEBUG_FILE_DIRECTORY environment variable.
    * doc/guix.texi (Installing Debugging Files): Document it.
---
 doc/guix.texi         | 14 ++++++++++++++
 gnu/packages/gdb.scm  |  7 +++++++
 gnu/system/shadow.scm |  8 +++++++-
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 7beb2c3..0922917 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 8301217..11e0bb3 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 a69339b..8c76bc2 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++.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]