The debugging problem (function appears on one line) can be dealt with:
pipe the output of cpp to indent(1) and do a little bit of processing on
the preprocessors line markers (like: # 1 "/usr/include/stdint.h"). Gdb
now sees the function on several lines, and it's much easier to use the
debugger on them.