Just for the record, in 1991 Johnson PCC and dbx/adb were perfectly viable alternatives to GCC and GDB. Not nearly *as* good, mind you, but plenty good enough for the work that needed to be done. Technically, Johnson PCC was probably never "open source", but it was also tiny and simple, and would have been easy to replace with an open source equivalent. Somebody would have, too, if GCC hadn't been handed to them for free.
I was building commercial products using these tools as late as the late 1980s.
The big break for GCC actually came with the advent of C++. Up until GNU C++, the only available C++ implementation was AT&T's fairly horrific CFRONT preprocessor. Not sure I'm thanking the GNU folks for making this language viable, and at any rate it was never really used for fundamental infrastructure.
What did you think BSD used for tools before RMS helped them out, anyhow?