[M3devel] FW: put full paths to source files in debug info]
Tony Hosking
hosking at cs.purdue.edu
Thu Feb 28 20:12:33 CET 2008
I concur with Rodney on this. There are deeper issues here than
simply avoiding the need to use dir in gdb.
On Feb 28, 2008, at 2:05 PM, Rodney M. Bates wrote:
>
> I don't understand what the need for these paths is. In every
> complete
> program, all the interfaces and all the modules must have unique
> simple
> names, otherwise code could not refer to them. With the filename
> matchup
> rules, this should make all the simple file names unique too. So any
> debug commands should never need a path. And using simple names
> avoids
> the problems of moving compiled code.
>
> Is it more output from the debugger you want? If so, this could no
> doubt
> be done by the debugger itself with the debug info as it was. It
> already
> contained one copy of the full path to the source file in each
> object file,
> though I don't know of a place the debugger uses this now.
>
> Yes, I know the filename/modulename rules don't actually apply for
> modules,
> but not following them is a bad practice. I've been around that
> block many
> times with Ada, and believe me, it's a nightmare. Furthermore, then
> you
> wouldn't be able to name things in the debugger as
> ModuleName.VarOrProcInModule,
> This construct does not exist in code but is very useful in
> debugging, especially
> when InterfaceName/ModuleName is not one-to-one, e.g. when a module
> exports >1
> interface, etc.
>
> Jay wrote:
>> truncated again! and possibly misformated..
>>
>> ------------------------------------------------------------------------
>> From: jayk123 at hotmail.com
>> To: m3devel at elegosoft.com
>> Subject: RE: put full paths to source files in debug info
>> Date: Thu, 28 Feb 2008 08:44:11 +0000
>> pps: "webinfo" (Reactor?) and assertion failures are affected by
>> this also, but not fully.
>> Before you would have gotten:
>> ***
>> *** runtime error:
>> *** <*ASSERT*> failed.
>> *** file "WaitProcessCygwin.m3", line 16
>> ***
>> but now you get:
>> ***
>> *** runtime error:
>> *** <*ASSERT*> failed.
>> *** file "..\src\thread\WIN32\WaitProcessCygwin.m3", line 16
>> ***
>> I'd say the realpath call (or whatever the portable Modula-3
>> library
>> call is) should be moved up to m3front to address these, and the
>> parse.c change undone.
>> As well, I believe resolving symlinks is happening too but
>> that
>> wasn't the point, so something instead of realpath might be
>> preferable. Like, just see if the string starts ".\" or "..\", it
>> will almost always start "..\", and if so, prepend current working
>> directory and then workout the dots.
>> It may also be reasonable to provide paths to the compiler
>> to remove
>> from the starts of paths, which would likely address the symlink
>> issue, since they are more likely to be nearer the start of the
>> path
>> than the middle or end. As well as partly the
>> privacy/size/same-across-machines issues.
>> In any case, I think this easy small change is already very
>> useful
>> progress. Or does everyone else just fill up .gdbinit with dir
>> commands? It seems to me that it shouldn't even that difficult,
>> even
>> if it isn't very difficult.
>> Agreed?
>> - Jay
>>
>> ------------------------------------------------------------------------
>> From: jayk123 at hotmail.com
>> To: m3devel at elegosoft.com
>> Subject: re: put full paths to source files in debug info
>> Date: Thu, 28 Feb 2008 08:31:32 +0000
>> ps: does anyone care that binaries built from different cvs
>> checkouts, but otherwise identical source, will no longer match,
>> unless perhaps they are "stripped"?
>> If so, or if any of the other issues bug people, or any other
>> problem is brought up or discovered, this can be made a command
>> line option. I will always turn it on. :)
>> - Jay
>>
>> ------------------------------------------------------------------------
>> > Date: Thu, 28 Feb 2008 09:23:22 +0000
>> > To: m3commit at elegosoft.com
>> > From: jkrell at elego.de
>> > Subject: [M3commit] CVS Update: cm3
>> >
>> > CVSROOT: /usr/cvs
>> > Changes by: jkrell at birch. 08/02/28 09:23:22
>> >
>> > Modified files:
>> > cm3/m3-sys/m3cc/gcc/gcc/m3cg/: parse.c
>> > cm3/m3-sys/m3front/src/misc/: Coverage.m3 Host.i3 Host.m3
>> > Scanner.m3
>> >
>> > Log message:
>> > put full paths to source files in debug info
>> >
>> > This has the minor downsides of:
>> > 1) grows the debug info (it is already huge; who is counting?)
>> > 2) reveals file system layout in debug info (privacy?)
>> > 3) does it inhibit debugging files from other people's machines
>> or does gdb dir still work?
>> >
>> > but definitely makes for a more pleasant debugging experience
>> when
>> > debugging stuff you have built yourself.
>> >
>> > The linear searching to see if a name has been allocated a
>> number yet
>> > will obviously slow way down due to a large increase in common
>> prefixes,
>> > but that should be a hash table anyway. Linear search is lame.
>> > (or a trie, but working from the ends of the strings, minus the
>> last one or few
>> > characters, due to common prefixes as well as common suffixes)
>> >
>> > Note that both m3front and m3cc changes are needed as m3front
>> has
>> paths
>> > relative to the current working directory or such.
>> >
>> > For most packages, you can get by without the m3front change
>> and
>> just prepend
>> > "../src/" to the path in m3cc, but that doesn't work for
>> hierarchical packages
>> > such as libm3 and m3core which I am debugging.
>> ------------------------------------------------------------------------
>> Need to know the score, the latest news, or you need your Hotmail®-
>> get your "fix". Check it out. <http://www.msnmobilefix.com/Default.aspx
>> >
>
> --
> -------------------------------------------------------------
> Rodney M. Bates, retired assistant professor
> Dept. of Computer Science, Wichita State University
> Wichita, KS 67260-0083
> 316-978-3922
> rodney.bates at wichita.edu
More information about the M3devel
mailing list