I don't understand how you could have this problem. Can you try to
reproduce it with a simple project using stock CDT?
I don't either. I'm not the only one that's reported this problem (see link in my last post). I just failed to reproduce it in a very simple makefile project like this:
2mains/a/main.cpp
2mains/b/main.cpp
2mains/makefile
The makefile just builds b/main.cpp. When I debug this, it breaks in the correct place, b/main.cpp. My project has many more subprojects, each with their own makefiles that get invoked by the top level makefile. I am currently using the CDT bundled with Galileo.
When the debugger looks for a file, it does so by using source locators.
The source locators used for a debug session are the ones in the launch
configuration (and any defined in the global preferences). The Absolute
File Path is a locator which finds the file by looking for it at exactly
the location specified in the specification. So if the specification is
an absolute path, that locator looks for it at exactly that
location.
So the "Absolute
File Path" locator looks for files using an absolute path, and the
Project locator looks for files relative to the project root? This seems straightforward.
The locators are used in the order in which they appear in the GUI, and
the Absolute one is first, so your problem doesn't make sense to me.
Thus, if you could help us reproduce it here, we can take a look and see
if there's a bug abound.
It seems to me the debugger should be able to figure out the difference between /src/projectRoot/a/main.cpp and /src/projectRoot/b/main.cpp regardless of whether it is using relative or absolute paths to lookup files first. Are you implying that the debugger can only correctly find /src/projectRoot/b/main.cpp when it uses the Absolute File Path locator?