> On Apr 9, 2021, at 11:39 AM, Emre Kultursay via lldb-dev
> wrote:
>
> When debugging C/C++ (statically scoped languages), does LLDB recognize (or
> does it have a setting for it) that a local variable is not defined yet at
> the current program address (i.e., DW_AT_decl_line is less than the source
> line for the address), and thus, not include it in the list of locals (i.e.,
> frame variable)?
>
> Does it make sense to have such a setting? The goal is to reduce the clutter
> in locals list.
LLDB does not. We show exactly what the compiler emits. DWARF, the debug
information, is powerful enough to say from [0x1000-0x1010) the variable is
here, and from [0x1020-0x1100) the variable is there, these are called location
expressions. But the compiler, for non optimized code, always just emits the
variable's location on the stack and doesn't correctly limit it to when the
variable has been initialized.
So this could easily be fixed in the compiler. LLDB really needs to listen to
what the compiler says because once you enable optimizations, the compiler can
end up moving all sorts of code around and the variable _could_ become
initialized before the DW_AT_decl_line.
So we don't want to pretend we know better than the compiler when displaying
debug information. But even if the compiler does emit better debug information
that does give correct location expressions, we would still show the variable
because it is in scope. LLDB does only show variables that are in lexical scope
currently in Xcode, lldb-vscode, lldb, and Android Studio AFAIK. What debugger
are you using?
Greg
>
> ___
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
___
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev