Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-dev] CDI - Variables and Expressions views are generatingunnecessary requests

Hi Laurent,
 
The variables and expressions are evaluated lazily. At least that's how it is supposed to work. If you can provide a simple test case and submit it to bugzilla I can track the problem you are seeing.
The evaluation of an _expression_ is different than of a variable for a simple reason: the _expression_ is evaluated for all active contexts (stack frames), variables only for the context they are created in.
 
Regards,
Mikhail

From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Laurent Nicolas (lnicolas)
Sent: Thursday, April 16, 2009 5:07 AM
To: cdt-dev@xxxxxxxxxxx
Subject: [cdt-dev] CDI - Variables and Expressions views are generatingunnecessary requests

Greetings.
I have a pointer lcb (large control block) to a large structure,  that contains 201 elements.  I have a breakpoint on a function that takes lcb as a parameter.
I have two concerns (this is with CDI):
a) When I stop at the breakpoint, even if lcb is collapsed, and (sometimes even if the Variables view is not active), I see a ptype lcb request being sent on the MI interface.
[1,239,842,202,394] 2761 ptype lcb
[1,239,842,202,395] ~"ptype lcb\n"
[1,239,842,202,399] ~"type = struct largedata_ {\n"
>>> followed by 201 elements.
My concern is that the response generates a lot of traffic.  Which can introduce a significant delay on a slow interface. 
If lcb is also added to the Expressions view, I see two additional ptypes
[1,239,852,566,876] 4066-var-create - * lcb
[1,239,852,566,885] 4066^done,name="var139",numchild="201",type="largedata *"
[1,239,852,566,885] (gdb)
[1,239,852,566,885] 4067 ptype largedata *
[1,239,852,566,886] ~"ptype largedata *\n"
[1,239,852,566,891] ~"type = struct largedata_ {\n"
skipped lines: 201
[1,239,852,568,439] ~"} *\n"
[1,239,852,568,442] 4067^done
[1,239,852,568,442] (gdb)
[1,239,852,568,443] 4068 ptype lcb
[1,239,852,568,444] ~"ptype lcb\n"
[1,239,852,568,448] ~"type = struct largedata_ {\n"
skipped lines: 201
[1,239,852,570,069] ~"} *\n"
It looks like a lot of redundant traffic, the more if the pointer variable is collapsed and I'm only interested in the pointer variable value.  It's also interesting the Variables view and the Expressions view have two different behaviors.
These 2 ptypes are observed, even if the Expressions view is not active, or at least sometimes.
b) When lcb is added to the Expressions view, in addition to the two ptypes, if the view is active, I will see ptypes for all unique element types in the structure, even if lcb is collapsed.  And for each single step, I see a
[1,239,852,896,259] 4173-var-list-children var139
[1,239,852,897,848] 4173^done,numchild="201",children=[child={name="var139.field1",exp="fiel\
skipped lines: 157
 So my two questions are:
1) is there a way to have a lazy evaluation, so that expressions or variables are only evaluated on request.  I see that partially, for instance for the Variables view, I see a ptype, but no var-list-children - while the Expressions view is more chatty.  I'd like to defer all children actions to when the variable is expanded.  Or at a minimum, not to request a var-list-children when the variable is collapsed.
 
2) the observed behavior is not consistent.  Sometimes I see requests, even if the view is not selected, other times I don't see them.  So I wonder if this is an issue that is already reported.
Thank you
Laurent
 
--
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

Back to the top