Hi, again -
Fair enough - I get that you're familiar with "strlen ()".
For whatever it's worth, the two points I had tried to make were:
1) GDB can be formidable (heck, the GDB "cheat sheet" jtshaw referred you to might appear formidable!), but it can also be really easy. In general, you'll only need four or five GDB commands most of the time (including "where" and "quit").
So if you're not already familiar with GDB, please definitely avail yourself of a brief, simple tutorial like this one:
http://oucsace.cs.ohiou.edu/~bhumphre/gdb.html
2) The second point I wanted to make is that, even though "strlen()" might appear to be the culprit, it's very probably two or three (or more!) steps removed from the root cause.
So don't get hung up on "strlen()" itself. You mentioned NULL pointers - that's certainly possible. A string that *doesn't* have a NULL terminator is also a candidate. And a string that *used* to have a NULL terminator ... until somebody else accidentally *overwrote* it ... is even likelier.
Happy hunting!
Your .. PSM
PS:
You might also wish to consider tools like Valgrind or Electric Fence...