summaryrefslogtreecommitdiffstats
path: root/Documentation/howto-debug.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 19:10:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 19:10:49 +0000
commitcfe5e3905201349e9cf3f95d52ff4bd100bde37d (patch)
treed0baf160cbee3195249d095f85e52d20c21acf02 /Documentation/howto-debug.txt
parentInitial commit. (diff)
downloadutil-linux-cfe5e3905201349e9cf3f95d52ff4bd100bde37d.tar.xz
util-linux-cfe5e3905201349e9cf3f95d52ff4bd100bde37d.zip
Adding upstream version 2.39.3.upstream/2.39.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'Documentation/howto-debug.txt')
-rw-r--r--Documentation/howto-debug.txt74
1 files changed, 74 insertions, 0 deletions
diff --git a/Documentation/howto-debug.txt b/Documentation/howto-debug.txt
new file mode 100644
index 0000000..6936eb5
--- /dev/null
+++ b/Documentation/howto-debug.txt
@@ -0,0 +1,74 @@
+Debugging util-linux programs
+=============================
+
+How to deal libtool
+-------------------
+
+There are considerations to be made when profiling or debugging some programs
+found in the util-linux package. Because wrapper scripts are used for the
+binaries to make sure all library dependencies are met, you cannot use tools
+such as gdb or valgrind directly with them.
+
+Let's take for example the mount command:
+
+ $> cd /path/to/util-linux
+ $> file mount/mount
+ mount/mount: Bourne-Again shell script text executable
+
+The binary itself is located in the mount/.libs/ directory:
+
+ $> file mount/.libs/mount
+ mount/.libs/mount: ELF 64-bit LSB executable, x86-64, version 1 \
+ (SYSV), dynamically linked (uses shared libs) [...]
+
+When this command is run, there's a library dependency error:
+
+ $> mount/.libs/mount
+ mount/.libs/mount: /lib/libblkid.so.1: version `BLKID_2.20' not found \
+ (required by mount/.libs/mount)
+
+To overcome this we need set the LD_LIBRARY_PATH variable to read the path of
+the shared lib found in the sources, and not system-wide:
+
+ $> export LD_LIBRARY_PATH=$PWD/libblkid/src/.libs/:$LD_LIBRARY_PATH
+
+Now external debugging tools can be run on the binary.
+
+Happy hacking!
+Davidlohr Bueso, August 2011
+
+
+The libmount & libblkid
+-----------------------
+
+Both of the libraries can be debugged by setting an environment variable
+consisting of a number. The number will be used as a bit mask, so the more 1 the
+higher the debugging level. Search for `DEBUG' from files
+
+ libblkid/src/blkidP.h
+ libmount/src/mountP.h
+
+to see what the different bits mean. At the time of writing this the following
+enabled full debug.
+
+ export LIBBLKID_DEBUG=all
+ export LIBMOUNT_DEBUG=all
+ export LIBFDISK_DEBUG=all
+ export LIBSMARTCOLS_DEBUG=all
+
+The libblkid reads by default /etc/blkid.conf which can be overridden by the
+environment variable BLKID_CONF. See manual libblkid/libblkid.3 for details
+about the configuration file.
+
+Block device information is normally kept in a cache file (see blkid man page
+for more information about the cache file location) that can be overridden by
+the environment variable BLKID_FILE.
+
+To libmount uses three paths, which can be overridden by using environment
+variables. Notice that these environment variables are ignored for non-root
+users.
+
+ env variable if not set defaults to
+ LIBMOUNT_FSTAB /etc/fstab
+ LIBMOUNT_MTAB /etc/mtab
+ LIBMOUNT_UTAB /run/mount/utab or /dev/.mount/utab