summaryrefslogtreecommitdiffstats
path: root/Documentation/howto-debug.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/howto-debug.txt')
-rw-r--r--Documentation/howto-debug.txt38
1 files changed, 38 insertions, 0 deletions
diff --git a/Documentation/howto-debug.txt b/Documentation/howto-debug.txt
new file mode 100644
index 000000000..bacc61508
--- /dev/null
+++ b/Documentation/howto-debug.txt
@@ -0,0 +1,38 @@
+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