Yeah, it's kind of annoying to fix these bugs for me, even though GDB is a great debugging tool.

I always wonder if there are any techniques to avoid these kind of bugs in huge projects like OSes and browsers, otherwise it can be a nightmare

You can read about how NASA writes their code, I remember reading an article about it, which includes some great tips with how to avoid these kind of bugs. And I think also as other commenter said, new languages like Rust really help with avoiding bugs like that.