Here I'll describe how I like to debug libtricks.
Debugging the 'vpath' part of libtricks can be done by just
following the third (last, gdb) part of the description for
faked below.

Debugging the fakeroot part, can be done by opening 3 xterms
(or 2 xterms and gdb inside emacs or whatever).

Start faked in xterm 1:   
  $ faked --foreground --debug
  51452231:280
     # First number here is the 'FAKEROOTKEY', second is the pid of
     # faked. Both to be used later.
     # Later, when programs go using faked, a _lot_ of debug output
     # will be shown here.

Send signals to faked in xterm 2:
  #Whenever you want to get info about the internal inode data
  #faked is keeping, do:
  kill -SIGUSR1 280

And the  'real' program runs in xterm3/gdb:
  In an xterm, do:
    $ LD_PRELOAD=/usr/lib/libtricks/libtricks.so.0
    $ FAKEROOTKEY=51452231   # number output by faked, xterm 1
    $ export LD_PRELOAD FAKEROOTKEY
    $ my-prog          #start anything you like.

  In a gdb session:
  To make specifying the paths easier, put libtricks.c, libtricks.so.0.0.1
  and the binary you want to run in the same directory (libtricks.so.0.0.1
  is put in ./.libs/libtricks.so.0.0.1 by libtool during compilation, copy
  it out there).
  Then, in gdb do:
    $ gdb ./ls #as an example, I run 'ls'.
    (gdb) set env LD_PRELOAD=/home/joost/maintain/vpathlib/libtricks-0.1/libtricks.so.0.0.1
    (gdb) set env FAKEROOTKEY=51452231 #number from xterm 1.
     # Or wherever you've got your libtricks.so.0.0.1
    (gdb) break libtricks.c:181
    Breakpoint 1 at 0x4000ecc8: file libtricks.c, line 181.
    (gdb) run -al
    Starting program: /home/joost/maintain/vpathlib/libtricks-0.1/ls -al
    Temporarily disabling shared library breakpoints:
    1
    
    Breakpoint 1, __lxstat (ver=134556187, file_name=0x0, statbuf=0x80529c8)
    	at libtricks.c:208
    208                  struct stat *statbuf){
    
    # OK, and there I've found a bug -- ver can only be '0' in the
    # current libc6 (glibc2). Unfortunately, it didn't reproduce.

