I finally got a chance to poke at this a bit. The problem code is not in a dll, but rather in a multi level project tree.
I can single step into the file, and over the breakpoint, but the breakpoint will not fire when run. The difference is that the path of the file with the breakpoint, which is passed to gdb when the program starts, is different than the path shown between each step when single-stepping.
The breakpoint path is the actual path of the source file.
c:\src\testproject\src\dosomething.c
The single step path is the full path, relative to the project (.cdb) file. This relative path starts from the root, but has a "\..\" in it, which matches the path of the compiled file relative to the project.
c:\src\testproject\test\..\src\dosomething.c
I think the problem is that the debug information contains the relative path to the source file, and the debugger is passed a different path, the absolute path, which it cannot resolve.
My reason for such an odd project scheme is that I'm using C::B to develop a test suite for a cross compiled application. The test project lives at a deeper path than the actual project.
c:\src\testproject
c:\src\testproject\src
c:\src\testproject\src\dosomething.c
c:\src\testproject\inc
c:\src\testproject\inc\dosomething.h
c:\src\testproject\test
c:\src\testproject\test\test.cbp
c:\src\testporject\test\test.c
Does this seem worthy of a bug report? It would seem that passing the debugger the same path that the compiler used would resolve this issue.