[LLVMdev] get function local debug info?

David Blaikie dblaikie at gmail.com
Sat Nov 2 23:30:45 PDT 2013


On Sat, Nov 2, 2013 at 4:17 PM, lu zhao <luzhao at cs.utah.edu> wrote:

>  Hi,
>
> If I have an instance of DISubprogram, can I get the debug info of local
> variables of the function, including parameters?
>
> I tried to use the getVariables() function defined in DISubprogram, but it
> seemed to return an empty DIArray node when I ran my pass alone using opt.
> Do I need to enable any other analysis passes in order to populate the data?
>
> My related snippet of code is like the following:
>
>     NamedMDNode *M_Nodes = M.getNamedMetadata("llvm.dbg.cu");
>     for (unsigned i = 0, e = M_Nodes->getNumOperands(); i != e; ++i) {
>       DIArray SPs = CU.getSubprograms();
>       for (unsigned i = 0, e = SPs.getNumElements(); i != e; ++ i) {
>         DISubprogram SP(SPs.getElement(i));
>         DIArray Vars = SP.getVariables();
>         for (unsigned i2 = 0, e2 = Vars.getNumElements(); i2 != e2; ++i2) {
>           DIVariable DV(Vars.getElement(i));
>           DV.print(errs()); errs() << " : "; DV.getType().dump();
>         }
>       }
>     }
>
> In addition, can I use DebegInfo to get the list of parameters (var names
> and types) of a subprogram? or I have to parse the underlying metadata and
> build the relationship?
>

Basically this /\. We use the variables list (the getVariables function you
mentioned) to persist the variables in optimized (above -O0) builds, but at
-O0 we save metadata space by not emitting the list and relying on the
dbg_value/declare intrinsics to keep the variable metadata alive and the
variables to refer to their scope (lexical blocks (that refer to
subprograms) or subprograms).

So you'd have to walk all the instructions looking for dbg_declare/value (I
forget which, perhaps both) and trace those back to the DIVariables, etc...


>
> Thanks,
> Lu
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131102/380fc486/attachment.html>


More information about the llvm-dev mailing list