I have two very
simple c projects, "mingw1" and "mingw2". They were created by running the CDT
new "HelloWorld" project wizard, so both projects have only one source file
named "main.c". I attached my two projects to this message.
I built both
projects using MingW toolchain, add one breakpoint in "mingw1/main.c" at line
16, and debug the second project "mingw2". In the debug, I select the DSF
"Create Process Launcher", and unselect the "stop at main()" option.
Since I only
have one breakpoint defined in "mingw1/main.c", I don't expect my debug of
"mingw2" will stop. But in fact it stops at line 16 of "mingw2/main.c".
Looking at the
gdb trace console I see the below section:
209,146
9-file-exec-and-symbols --thread-group i1
C:/workspace/PureCDT/mingw2/Debug/mingw2.exe
209,178
10-list-thread-groups
209,178
9^done
209,178 (gdb)
209,193
11-break-insert --thread-group i1 -f main.c:16
209,193
10^done,groups=[{id="i1",type="process",executable="c:\\workspace\\purecdt\\mingw2\\debug\\mingw2.exe"}]
209,193 (gdb)
209,193
11^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x004013a2",func="main",file="..\\src\\main.c",fullname="c:\\workspace\\purecdt\\mingw2\\src\\main.c",line="16",times="0",original-location="main.c:16"}
It's clearly
that it uses just the base name of the source file when adding breakpoint, and
it successfully finds "main.c" in the "mingw2" project so the breakpoint is
added.
I only see this
on Windows, Linux and Mac don’t have this problem. I tried the same on Mac and
the gdb trace console shows below section:
482,001
5-file-exec-and-symbols
/Users/ajin/workspace/mgrC-MacOSX2/Debug/mgrC-MacOSX2
482,027
5^done,time={wallclock="0.02525",user="0.01502",system="0.00724",start="1323888482.001276",end="1323888482.026527"}
482,027 (gdb)
482,035
8-break-insert
/Users/ajin/workspace/mgrC-MacOSX/src/main.c:16
482,036
6^error,msg="No source file named
/Users/ajin/workspace/mgrC-MacOSX/src/main.c."
On Mac it uses the full path to add
breakpoint.
I believe this is very similar (if
not exactly the same) issue with CDI debugger bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=157220.
To fix that CDI debugger bug a launch configuration option "Use
full file name to set breakpoints" was introduced.
But this option was lost in DSF debug.
Is there an explanation why
this only happens on Windows? How shall we fix it in DSF? Do we need to
introduce the same option from CDI debug?
Thanks,
Andy Jin