[cfe-dev] rfc: Adding a mode to -gline-tables-only to include parameter names, namespaces

Duncan P. N. Exon Smith dexonsmith at apple.com
Wed Apr 29 13:16:22 PDT 2015


> On 2015-Apr-29, at 13:03, Adrian Prantl <aprantl at apple.com> wrote:
> 
> 
>> On Apr 29, 2015, at 12:25 PM, Nico Weber <thakis at chromium.org> wrote:
>> 
>> Hi,
>> 
>> the motivation for -gline-tables-only was to make debug info much smaller, but still include enough to get usable stack frames [1]. We recently tried using it in Chromium and discovered that the stack frames aren't all that usable: Function parameters disappear, as do function namespaces.

This bothers me too, although Adrian has convinced me that
filename and line number are sufficient for triaging (even if they
aren't convenient).

> 
>> 
>> Are there any concerns about adding a mode to -gline-tables-only (or a second flag -gline-tables-full, or similar) that includes function parameter info and namespace info but still omits most debug info?
> 

FWIW, I'd be in favour of having a mode that includes scopes.
They were ripped out in r220408:

> Author: dblaikie
> Date: Wed Oct 22 14:34:33 2014
> New Revision: 220408
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=220408&view=rev
> Log:
> DebugInfo: Omit scopes in -gmlt to reduce metadata size (on disk and in memory)
> 
> I haven't done any actual impact analysis of this change as it's a
> strict improvement, but I'd be curious to know how much it helps.

I'd appreciate them for triaging clang crashes, which I do a fair bit
of internally.  (We don't use -g because I haven't made it scale with
-flto yet.)

Would including just namespaces/scopes be good enough for your use
case?  (Adrian's point below seems valid -- parameters kind of pull
in everything.)

> I’m not convinced that the resulting debug info will dramatically smaller than the full debug info. The largest bit of the debug info is the type information if we are going to emit function parameters that will probably pull in the majority of the types in the program.
> 
>> 
>> (Background: We rely on dsym files to let our crash server symbolize crash dumps we get from the wild. dsymutil uses debug info, but it apparently crashes if debug info is > 4GB.
> 
> The problem here is that neither llvm nor dsymutil understand the 64-bit DWARF format. Note that the llvm-dsymutil that is being developed will be able to do ODR-based type uniquing for C++, which should also provide enough savings to make this go well under the 4GB mark. 
> 
>> We hit that recently. So we started using -gline-tables-only, but now all our stacks are close to unusable, even though the motivation for gline-tables-only was to still have usable stacks. We can't easily use symbol names as they get stripped very early in our pipeline, and changing that is apparently involved.)
> 
> 
> -- adrian
>> 
>> Thanks,
>> Nico
>> 
>> 
>> 1: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120423/056674.html
> 





More information about the cfe-dev mailing list