[Dwarf-Discuss] pubnames

David Anderson davea42 at earthlink.net
Tue Feb 3 11:36:03 PST 2009


I added workgroup to the list.  Perhaps I should have removed dwarf-discuss?

Andrew Cagney wrote:
> Can you give an example of how enums in .debug_pubnames would be used?
>
> I tried to work through several scenarios:
>
> - given something like:
>     print a::name
> since we can't assume it is fully qualified (and use .debug_pubnames
> as a cheat) we must first resolve it using the current context's
>   

That's not quite true.  A debugger-writer can use .debug_pubnames for 
the above.
Because she can (if  she chooses) do comparisons with the 'tail' of each
fully qualified name in .debug_pubnames.   Even if a::name  appears more 
than once it
will likely (?) only appear in a limited number of  entries, limiting 
the places
one might want to further investigate .debug_info.

Vaguely similar  to how debuggers usually find file-static variables.

> .debug_info; in the case of an enum the .debug_info's name/scope
> information will yield the enum's value eliminating any reason to
> refer to .debug_pubnames.
>
> - given something like:
>     break a::function
> then the context's .debug_info could yield a fully-qualified-name like
> "name::of::a::function", and each module's .debug_pubnames could be
> searched for concrete instances of that function using the FQN, and
> breakpoints set accordingly.
>
> Section 5.1 Accelerated Access
> ``A debugger frequently needs to find the debugging information for a
> program entity defined outside of the compilation unit where the
> debugged program is currently stopped. Sometimes  the debugger will
> know only the name of the entity; sometimes only the address. To find
> the debugging information associated with a global entity by name,
> using the DWARF debugging information entries alone, a debugger would
> need to run through all entries at the highest scope within each
> compilation unit.''
>
> I think, hints at this.  Perhaps it should read "... only know the
> /fully qualified/ name of the entity; ...".
>
>   
So it's not quite true that /fully qualified/ is required (of the user)
so the debugger can use .debug_pubnames.  So I don't think the
paragraph above needs the change suggested above.

A clarification like you mentioned in later email

   Should the DWARF spec be clarified by adding:
      ... but rather the fully qualified name /(which includes the
   namespace)/ of the data or function member.

(a clarification for the compiler writer)  would be fine with me.  Namespaces
nest so a singular 'the namespace' is not totally clear though...

David Anderson





More information about the Dwarf-Discuss mailing list