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