|
List Info
Thread: test availability of variables in context from user command
|
|
| test availability of variables in
context from user command |
  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 |

|
2007-02-23 11:12:29 |
On 23/02/07, Christophe Demarey <Christophe.Demarey inria.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 |
  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 |
  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 |

|
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 )
|