I'm not following... You're saying that my printf()s are causing CB to parse GDB's output incorrectly? I'm no sure what "new thread" is for, my program is not multithreaded, unless a dependency is (maybe SDL)
I'm not a Linux user, so what I said is my guess(which may be wrong)
Basically, C::B need to parse the response message from GDB to get the correct inferior(debugee) pid.
For example, when you start debugging and running the inferior(debugee), GDB will report some message like:
[New Thread 0xb032ab40 (LWP 17444)]
Then, in C::B, if it get parsed, it know the inferior pid, in the above case, it is 17444.
Now, when you want to pause the inferior, there is a function call like "Break(17444)", this will halt your inferior(debugee).
Apparently, in the log messages showed, C::B has failed to catch the inferior pid, so it can't halt the inferior.
You can try to create a simple hello world application, and test again to see whether it works. I guess the log messages from your app have affect on the C::B debugger parser.