In many cases, you CAN do something worthwhile, even if it's a large project. I needed to "get under the hood" with glibc, gdb and vim, for example. In glibc's case, I found the problem, fixed it, went around to file a report with the fix and found out it was fixed in CVS, bummer :)
I can't count how many times this has happened to me. The most recent occurrence was in the XFree86 'chips' driver. Spent the better half of a day building a debug X server and isolating the problem, then discovering the fix was in X.org CVS.
The gdb case was more important, 'cos that bug was getting in our way to debug our application. If it were a closed source debugger, my only bet would be to mail the developers/publishers and hope for the best.
<troll>If it were a closed source application, it would have been higher quality because it went through QA, and not had such obvious bugs in the first place.</troll>