Second, you don't need launcher and panel to be started by the session,
if all you need is to debug them.
What you can do is to change the
/usr/share/applications/unity-2d-launcher and change the line with the
name of the executable to something that doesn't exist (to prevent the
session from starting it).
Then log out of your session and log in again. Press ctrl+alt+t to start
a new terminal and launch qtcreator from there, then start your launcher
under a debugger.
Yes, I assume you mean /usr/share/applications/unity-2d-launcher.desktop
above. I've got the various binaries that are normally exec'd by the .desktop
files replaced with custom shell scripts and that is working well. I can also
try your suggestion of making the .desktop files try to run a non-existent
binary.