To run vpp with the debug shell:

sudo ~vagrant/git/vpp/build-root/install-vpp_debug-native/vpp/bin/vpe unix interactive

which will result in a prompt that looks like:

DBGvpd#

To give it a spin, we can create a tap interface and try a simple ping
(with trace).

To create the tap:

DBGvpd# tap connect foobar
Created tap-0 for Linux tap 'foobar'
DBGvpd# show int

To assign it an ip address (and 'up' the interface):

DBGvpd# set int ip address tap-0 192.168.1.1/24
DBGvpd# set int state tap-0 up

To turn on packet tracing for the tap interface:
DBGvpd# trace add tapcli-rx 10

Now, to set up and try the other end from the unix prompt:
vagrant@vagrant-ubuntu-trusty-64:~$ sudo ip addr add 192.168.1.2/24 dev foobar
vagrant@vagrant-ubuntu-trusty-64:~$ ping -c 3 192.168.1.1

To look at the trace, back in the vpp CLI:
DBGvpd#  show trace

And to stop tracing:

DBGvpd# clear trace

Other fun things to look at:

The vlib packet processing graph:
DBGvpd# show vlib graph

which will produce output like:

           Name                      Next                    Previous
ip4-icmp-input                  error-punt [0]               ip4-local
                                ip4-icmp-echo-request [1]
                                vpe-icmp4-oam [2]

To read this, the first column (Name) is the name of the node.
The second column (Next) is the name of the children of that node.
The third column (Previous) is the name of the parents of this node.

To see this README again:
cat /vagrant/README