If you ever looked inside of perl source then you know code uses tons of C preprocessor macroses. GDB has a nice feature to expand them for you. However, you have to compile program to contain information about macroses and it took me a while to figure it out how to do it.
./Configure -des -Dprefix=/Users/ruz/perl/blead -Dusedevel \ -Doptimize='-O3 -g3' -DEBUGGING \ -Dusemymalloc -Dusethreads -Dinc_version_list=none
I find INSTALL very misleading, so filed a bug report and may be it will be explained in docs or Configure script will be improved.
Anyway, here is explanation. -DEBUGGING=-g3 doesn't work, it always puts -g flag. It's not clear from the doc that -Doptimize is different thing and you can put -g3 there. There is more to this, but to be short if -DDEBUGGING is set and -g* is in -Doptimize then things are not adjusted and you get what you want. However, setting -Doptimize overrides default optimization flags and you have to repeat them.