List Info

Thread: test availability of variables in context from user command




test availability of variables in context from user command
country flaguser name
France
2007-02-23 09:59:04
Hello,

I want to check the availability of a variable (var1 for
instance) in 
the context from an user command but I don't find any way to
do this.
Here is a (dummy) example of what I want to do :

void func1(void)
{
    int var2 = 2;
    ...
}

int main(int argc, char **argv)
{
  int var1 = 1;
 
  ...
  func1();
}

My gdb command:
define myfunc
  if defined(var1)
     $res = $var1
  else
     $res = $var2
  end
  ...
end

If I break into main, res should be equals to 1, else res
should be 
equals to 2.

Is there a way to do this with gdb?

Thanks,
Christophe.

Re: test availability of variables in context from user command
user name
2007-02-23 11:12:29
On 23/02/07, Christophe Demarey <Christophe.Demareyinria.fr> wrote:
> Hello,
>
> I want to check the availability of a variable (var1
for instance) in
> the context from an user command but I don't find any
way to do this.
> Here is a (dummy) example of what I want to do :
>
> void func1(void)
> {
>     int var2 = 2;
>     ...
> }
>
> int main(int argc, char **argv)
> {
>   int var1 = 1;
>
>   ...
>   func1();
> }
>
> My gdb command:
> define myfunc
>   if defined(var1)
>      $res = $var1
>   else
>      $res = $var2
>   end
>   ...
> end
>
> If I break into main, res should be equals to 1, else
res should be
> equals to 2.
>
> Is there a way to do this with gdb?

I modifed GDB to make in possible to cehck whether variables
are in
scope. I'm not sure if that's what you want, but you can do
things
like:

print $in_scope(var1);

or in a command file:

if($in_scope(var1) == 1)

i.e. do something if var1 is in scope. At the moment it only
covers
certain cases as I haven't had time to finish it off, but it
wouldn't
be hard to do. I modified it against 6.6, but hopefully I
can forge a
patch out of it, if you want it. I've never made a patch
before, but
I'm sure I'll figure it out.

Rob
>
> Thanks,
> Christophe.
>

Re: test availability of variables in context from user command
country flaguser name
United States
2007-02-23 11:36:45
On Fri, Feb 23, 2007 at 04:59:04PM +0100, Christophe Demarey
wrote:
> Is there a way to do this with gdb?

Roughly, no, there isn't - yet.  We're discussing adding a
full
scripting language, which will be more powerful than the
CLI.

-- 
Daniel Jacobowitz
CodeSourcery

Re: test availability of variables in context from user command
country flaguser name
France
2007-02-23 12:15:34
Rob Quill wrote:
> I modifed GDB to make in possible to cehck whether
variables are in
> scope. I'm not sure if that's what you want, but you
can do things
> like:
>
> print $in_scope(var1);
>
> or in a command file:
>
> if($in_scope(var1) == 1)
>
> i.e. do something if var1 is in scope.
It's exactly what I want to check.
> At the moment it only covers
> certain cases as I haven't had time to finish it off,
but it wouldn't
> be hard to do. I modified it against 6.6, but hopefully
I can forge a
> patch out of it, if you want it.
Unfortunately, this solution doesn't fit our needs because
our gdb user 
commands will crash on non-patched gdb versions.
But I think it should be a good idea to have a such
integrated 
functionality (a full scripting language too).

Thanks a lot for your answers.

Regards,
Christophe.

Re: test availability of variables in context from user command
user name
2007-02-23 13:48:40
On Fri, 2007-02-23 at 16:59 +0100, Christophe Demarey
wrote:
> Hello,
> 
> I want to check the availability of a variable (var1
for instance) in 
> the context from an user command but I don't find any
way to do this.

Just interjecting a thought -- it would be nice if gdb had
a
"which" command.  It could not only tell you
whether an identifier
was in scope, but tell you WHICH scope it was in.  Could be
useful,
for instance, to tell you that a local was over-shadowing a
global.



[1-5]

about | contact  Other archives ( Real Estate discussion Medical topics )