[fpc-devel]Issues with GDB on Mac OS X with mixed case file names
Dr. Rolf Jansen
InstantWare at t-online.de
Thu Aug 26 14:53:05 CEST 2004
The following smal pascal program is stored in file named
TestProgram.pas in the current working directory.
program TestProgamm;
var
i : Integer;
begin
for i := 1 to 5 do
writeln('Test');
end.
It compiles successfully with:
fpc -g TestProgram.pas
An object file named TestProgram.o and an executable named TestProgram
is produced in the cwd.
Invoking GDB with
gdb TestProgram
yields:
GNU gdb 5.3-20030128 (Apple version gdb-330.1) (Fri Jul 16 21:42:28 GMT
2004) ...BLAH...BLAH...
(gdb)
That is fine so far. But here is the issue:
(gdb) break TestProgram.pas:6
gives the error message:
No source file named TestProgram.pas.
while
(gdb) break testprogram.pas:6
gives the success confirmation:
Breakpoint 1 at 0x1fc08: file testprogram.pas, line 6.
(gdb) run
Starting program:
/Users/Rolf/Programmieren/Xcode/Pascal/TestProgram/TestProgram
Reading symbols for shared libraries . done
Breakpoint 1, P$TESTPROGAMM_main () at testprogram.pas:6
6 for i := 1 to 5 do
This is not a really big issue when using GDB from the command line. I
simply have to remember to input the filenames in lower case letters
for setting breakpoints.
However, setting breakpoints that do work by the way of Xcodes GUI is
not possible, because Xcode insists on using the original mixed case
file name. I searched for hours to no avail to tell either Xcode to use
lower case letters or to say GDB to ignore the case ("set
case-sensitive off" in GDB does NOT do the trick).
The lowercase filename comes into the .stabs of the TestProgram due to
the routine TGNUAssembler.WriteFileLineInfo of aggas.pas at line 237 of
the fpc compiler. If I change that line from:
AsmWriteLn(#9'.stabs "'+lower(FixFileName(infile.name^))+'",'+
to
AsmWriteLn(#9'.stabs "'+FixFileName(infile.name^)+'",'+
and compile fpc first and then again my TestProgram, then GDB happily
accepts the mixed case file name for seting breakpoints, and all the
features of Xcode can be used to source level debug fpc programs.
So, PLEASE, PLEASE, PLEASE, can someone change line 237 in aggas.pas as
indicated. It would be OK, to make the change conditional for the
target Darwin.
Just for my curiosity, how does this work with case sensitive
filesystems. My understanding of what´s going on tells me that setting
breakpoints in mixed case files e.g. in Linux does´t work even when
using lower case letters for the breakpoint, as long as line 237 of
aggas.pas is not changed.
Best regards
Rolf
__ InstantWare ______________________________________________________
Dr. Rolf Jansen * Stephanienstraße 19 * D-76133 Karlsruhe * Germany
http://InstantWare.bei.t-online.de/
_____________________________________________________________________
More information about the fpc-devel
mailing list