If it hasn't happened to you yet, it will:
You're working with library code - say, GNUTLS. You've dug around and installed all the prerequesites, and the libraries are all set up. You're all ready to get to work...
But the documentation doesn't match the headers you have. It turns out that all the documentation matches
Alright, enough theory. Time to actually debug something!
Most IDEs come with a built-in debugger. However, for most skilled C programmers, there is only one debugger: gdb.