labath accepted this revision.
labath added a comment.
This revision is now accepted and ready to land.

Looks good. Thanks.



================
Comment at: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4161
+  if (command) {
+    if (command->contains(" -gline-tables-only"))
+      return Status("-gline-tables-only enabled, no variable information is "
----------------
clayborg wrote:
> labath wrote:
> > clayborg wrote:
> > > labath wrote:
> > > > This isn't a particularly reliable way of detecting whether variable 
> > > > information was emitted. For example a command line `clang 
> > > > -gline-tables-only -g2` will in fact produce full debug info and `clang 
> > > > -g1` will not. Could we make that determination based on the presence 
> > > > of actual variable DIEs in the debug info? Perhaps query the index 
> > > > whether it knows of any (global) variable or any type defined within 
> > > > the compile unit?
> > > This function only gets called when there are no variables in a stack 
> > > frame at all and checks for reasons why. So if "-gline-tables-only -g2" 
> > > is used, this function won't get called if there were variables.
> > > 
> > > I planned to make a follow up patch that detected no variables in a 
> > > compile uint by checking the compile unit's abbreviation set to see if it 
> > > had any DW_TAG_variable or DW_TAG_formal_parameter definitions, and if 
> > > there weren't any respond with "-gline-tables-only might be enabled....". 
> > > 
> > > If we see this option for sure and have the side affect of there being no 
> > > variables, I would like to user the users know what they can do to fix 
> > > things if at all possible. 
> > I get that, but this check is not completely correct in either direction. 
> > For example, `clang -g1` will not produce variable information, but this 
> > code will not detect it. Same goes for `clang -gmlt`. And I probably missed 
> > some other ways one can prevent variable info from being generated. Keeping 
> > up with all the changes in clang flags will just be a game of whack-a-mole. 
> > If we checked the actual debug info, then we would catch all of these 
> > cases, including the (default) case when the compiler did not embed command 
> > line information into the debug info.
> > 
> > And I don't think we need to know the precise command line to give 
> > meaningful advice to the users. In all of these cases, sticking an extra 
> > `-g` at the end of the command line will cause the variables to reappear. 
> > If we wanted to, we could also put a link to the lldb web page where we can 
> > (at length) describe the various reasons why variables may not be available 
> > and how to fix them.
> I switched over to just looking for any variable DIEs anywhere in the CU. 
> This should cover all options. Let me know if you think we should add a top 
> level web page and reference it in the error message?
I think it might be nice to have some kind of a "I can't debug" troubleshooting 
page, but I don't think we need to tie it to the future of this patch. 


================
Comment at: lldb/test/API/commands/frame/var/TestFrameVar.py:173
+        '''
+        self.build(dictionary={'CFLAGS_EXTRAS': '-gline-tables-only 
-grecord-command-line'})
+        exe = self.getBuildArtifact("a.out")
----------------
I guess this isn't necessary any more.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133164/new/

https://reviews.llvm.org/D133164

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to