Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* conditional breakpoint with (char* ) string condition
@ 2006-05-12 12:43 Fabio De Bona
  2006-05-12 12:45 ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Fabio De Bona @ 2006-05-12 12:43 UTC (permalink / raw)
  To: gdb

Hi everyone,
I would like to set a conditional breakpoint with a condition that 
depends on the value of
a char* string, i.e. something like

b gui/R.cpp:190 if cmd=="train" (doesn't work of course)

resp.

b gui/R.cpp:190 if strcmp(cmd,"train")

is there a possibility to do this *without* changing the code (like 
setting a boolean or so in the source).

Regards

Fabio


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 12:43 conditional breakpoint with (char* ) string condition Fabio De Bona
@ 2006-05-12 12:45 ` Eli Zaretskii
  2006-05-12 13:53   ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2006-05-12 12:45 UTC (permalink / raw)
  To: Fabio De Bona; +Cc: gdb

> Date: Fri, 12 May 2006 11:37:56 +0200
> From: Fabio De Bona <Auslieferator@gmx.net>
> 
> b gui/R.cpp:190 if cmd=="train" (doesn't work of course)

But this should:

  b gui/R.cpp:190 if cmd[0]=='t' && cmd[1]=='r' && cmd[2]=='a' && cmd[3]=='i'

etc., you get the point.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 12:45 ` Eli Zaretskii
@ 2006-05-12 13:53   ` Daniel Jacobowitz
  2006-05-12 16:09     ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2006-05-12 13:53 UTC (permalink / raw)
  To: Fabio De Bona, Eli Zaretskii; +Cc: gdb

On Fri, May 12, 2006 at 11:37:56AM +0200, Fabio De Bona wrote:
> Hi everyone,
> I would like to set a conditional breakpoint with a condition that 
> depends on the value of
> a char* string, i.e. something like
> 
> b gui/R.cpp:190 if cmd=="train" (doesn't work of course)
> 
> resp.
> 
> b gui/R.cpp:190 if strcmp(cmd,"train")

This should actually work - although it's a bit slow to implement.

On Fri, May 12, 2006 at 02:21:16PM +0300, Eli Zaretskii wrote:
> > Date: Fri, 12 May 2006 11:37:56 +0200
> > From: Fabio De Bona <Auslieferator@gmx.net>
> > 
> > b gui/R.cpp:190 if cmd=="train" (doesn't work of course)
> 
> But this should:
> 
>   b gui/R.cpp:190 if cmd[0]=='t' && cmd[1]=='r' && cmd[2]=='a' && cmd[3]=='i'
> 
> etc., you get the point.

I wonder.  Should we add some common builtin functions to GDB?

  b gui/R.cpp:190 if $gdb_strcmp (cmd, "train")

[This might be quite a lot of work, since right now parsing "train"
will cause us to malloc() in the program.]

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 13:53   ` Daniel Jacobowitz
@ 2006-05-12 16:09     ` Eli Zaretskii
  2006-05-12 16:21       ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2006-05-12 16:09 UTC (permalink / raw)
  To: Fabio De Bona, gdb

> Date: Fri, 12 May 2006 08:45:27 -0400
> From: Daniel Jacobowitz <drow@false.org>
> Cc: gdb@sources.redhat.com
> 
> I wonder.  Should we add some common builtin functions to GDB?
> 
>   b gui/R.cpp:190 if $gdb_strcmp (cmd, "train")

It would be nice, I think.  `streq' might be a better name, though.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 16:09     ` Eli Zaretskii
@ 2006-05-12 16:21       ` Daniel Jacobowitz
  2006-05-12 18:00         ` PAUL GILLIAM
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2006-05-12 16:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Fabio De Bona, gdb

On Fri, May 12, 2006 at 04:49:49PM +0300, Eli Zaretskii wrote:
> > Date: Fri, 12 May 2006 08:45:27 -0400
> > From: Daniel Jacobowitz <drow@false.org>
> > Cc: gdb@sources.redhat.com
> > 
> > I wonder.  Should we add some common builtin functions to GDB?
> > 
> >   b gui/R.cpp:190 if $gdb_strcmp (cmd, "train")
> 
> It would be nice, I think.  `streq' might be a better name, though.

Well, I'd rather have strcmp, but I agree that I botched it - I was
going for something with the same semantics as C strcmp :-)

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 16:21       ` Daniel Jacobowitz
@ 2006-05-12 18:00         ` PAUL GILLIAM
  2006-05-12 18:59           ` Jim Blandy
  2006-05-12 20:36           ` Eli Zaretskii
  0 siblings, 2 replies; 14+ messages in thread
From: PAUL GILLIAM @ 2006-05-12 18:00 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Eli Zaretskii, Fabio De Bona, gdb

On Fri, 2006-05-12 at 09:54 -0400, Daniel Jacobowitz wrote:
> On Fri, May 12, 2006 at 04:49:49PM +0300, Eli Zaretskii wrote:
> > > Date: Fri, 12 May 2006 08:45:27 -0400
> > > From: Daniel Jacobowitz <drow@false.org>
> > > Cc: gdb@sources.redhat.com
> > > 
> > > I wonder.  Should we add some common builtin functions to GDB?
> > > 
> > >   b gui/R.cpp:190 if $gdb_strcmp (cmd, "train")
> > 
> > It would be nice, I think.  `streq' might be a better name, though.
> 
> Well, I'd rather have strcmp, but I agree that I botched it - I was
> going for something with the same semantics as C strcmp :-)
> 

IMHO, this is something that has been 'missing' from GDB from day 1.
Building in some common functions into GDB would be a big win.

How about strlen as well?

-=# Paul #=-


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 18:00         ` PAUL GILLIAM
@ 2006-05-12 18:59           ` Jim Blandy
  2006-05-15 17:55             ` Daniel Jacobowitz
  2006-05-12 20:36           ` Eli Zaretskii
  1 sibling, 1 reply; 14+ messages in thread
From: Jim Blandy @ 2006-05-12 18:59 UTC (permalink / raw)
  To: pgilliam; +Cc: Daniel Jacobowitz, Eli Zaretskii, Fabio De Bona, gdb


PAUL GILLIAM <pgilliam@us.ibm.com> writes:
> On Fri, 2006-05-12 at 09:54 -0400, Daniel Jacobowitz wrote:
>> On Fri, May 12, 2006 at 04:49:49PM +0300, Eli Zaretskii wrote:
>> > > Date: Fri, 12 May 2006 08:45:27 -0400
>> > > From: Daniel Jacobowitz <drow@false.org>
>> > > Cc: gdb@sources.redhat.com
>> > > 
>> > > I wonder.  Should we add some common builtin functions to GDB?
>> > > 
>> > >   b gui/R.cpp:190 if $gdb_strcmp (cmd, "train")
>> > 
>> > It would be nice, I think.  `streq' might be a better name, though.
>> 
>> Well, I'd rather have strcmp, but I agree that I botched it - I was
>> going for something with the same semantics as C strcmp :-)
>> 
>
> IMHO, this is something that has been 'missing' from GDB from day 1.
> Building in some common functions into GDB would be a big win.
>
> How about strlen as well?

I'm definitely in favor of $strcmp and $strlen.

Should we establish a convention of starting GDB-provided convenience
variable names with _, to avoid conflicting with script variables?
Thus, $_strcmp and $_strlen?


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 18:00         ` PAUL GILLIAM
  2006-05-12 18:59           ` Jim Blandy
@ 2006-05-12 20:36           ` Eli Zaretskii
  2006-05-13 11:24             ` PAUL GILLIAM
  1 sibling, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2006-05-12 20:36 UTC (permalink / raw)
  To: pgilliam; +Cc: drow, Auslieferator, gdb

> From: PAUL GILLIAM <pgilliam@us.ibm.com>
> Cc: Eli Zaretskii <eliz@gnu.org>, Fabio De Bona <Auslieferator@gmx.net>,
>         gdb@sources.redhat.com
> Date: Fri, 12 May 2006 08:05:32 -0700
> 
> How about strlen as well?

Where would it be useful?


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 20:36           ` Eli Zaretskii
@ 2006-05-13 11:24             ` PAUL GILLIAM
  0 siblings, 0 replies; 14+ messages in thread
From: PAUL GILLIAM @ 2006-05-13 11:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: drow, Auslieferator, gdb

On Fri, 2006-05-12 at 21:24 +0300, Eli Zaretskii wrote:
> > From: PAUL GILLIAM <pgilliam@us.ibm.com>
> > Cc: Eli Zaretskii <eliz@gnu.org>, Fabio De Bona <Auslieferator@gmx.net>,
> >         gdb@sources.redhat.com
> > Date: Fri, 12 May 2006 08:05:32 -0700
> > 
> > How about strlen as well?
> 
> Where would it be useful?

Here is an admittedly contrived example. Say we had a target program
that was writing a 'progress meter' to stderr with the following code:

        void progress_tick (buf)
        {
          void strcat (buf, ".");
          fprintf (stderr, "\r%s", buf);
        }
        
        main ()
        {
          char progress[1024] = { 0 };
          . . .
          while ( ! done)
          {
            progress_tick (progress);
            real_work ();
          }
        
          return 0;
        }
        
Then in GDB you could do this:

        start
        b real_work if $_strlen(progress) >= 5
        

Yes, this example might not be 'real world', but strlen just seems to go
with strcmp.
 
-=# Paul #=-


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-12 18:59           ` Jim Blandy
@ 2006-05-15 17:55             ` Daniel Jacobowitz
  2006-05-15 19:17               ` Jim Blandy
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2006-05-15 17:55 UTC (permalink / raw)
  To: Jim Blandy; +Cc: pgilliam, Eli Zaretskii, Fabio De Bona, gdb

On Fri, May 12, 2006 at 11:00:16AM -0700, Jim Blandy wrote:
> Should we establish a convention of starting GDB-provided convenience
> variable names with _, to avoid conflicting with script variables?
> Thus, $_strcmp and $_strlen?

Or should they have a $gdb_ prefix?  Or $_gdb_?

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-15 17:55             ` Daniel Jacobowitz
@ 2006-05-15 19:17               ` Jim Blandy
  2006-05-15 19:51                 ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: Jim Blandy @ 2006-05-15 19:17 UTC (permalink / raw)
  To: pgilliam; +Cc: Eli Zaretskii, Fabio De Bona, gdb


Daniel Jacobowitz <drow@false.org> writes:
> On Fri, May 12, 2006 at 11:00:16AM -0700, Jim Blandy wrote:
>> Should we establish a convention of starting GDB-provided convenience
>> variable names with _, to avoid conflicting with script variables?
>> Thus, $_strcmp and $_strlen?
>
> Or should they have a $gdb_ prefix?  Or $_gdb_?

Or $this_is_a_gdb_variable_20060515_GNU_prvt_ISO_IEC_9989:1999_?  :)
(There must be some way to get a UUID and 'http' in there...)

Hey, maybe we could just take over some prefix like $- that doesn't
conflict with the user and register namespace at all.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-15 19:17               ` Jim Blandy
@ 2006-05-15 19:51                 ` Daniel Jacobowitz
  2006-05-15 22:44                   ` Jim Blandy
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2006-05-15 19:51 UTC (permalink / raw)
  To: Jim Blandy; +Cc: pgilliam, Eli Zaretskii, Fabio De Bona, gdb

On Mon, May 15, 2006 at 11:50:30AM -0700, Jim Blandy wrote:
> 
> Daniel Jacobowitz <drow@false.org> writes:
> > On Fri, May 12, 2006 at 11:00:16AM -0700, Jim Blandy wrote:
> >> Should we establish a convention of starting GDB-provided convenience
> >> variable names with _, to avoid conflicting with script variables?
> >> Thus, $_strcmp and $_strlen?
> >
> > Or should they have a $gdb_ prefix?  Or $_gdb_?
> 
> Or $this_is_a_gdb_variable_20060515_GNU_prvt_ISO_IEC_9989:1999_?  :)
> (There must be some way to get a UUID and 'http' in there...)

Hey, I was serious about $gdb_...

> Hey, maybe we could just take over some prefix like $- that doesn't
> conflict with the user and register namespace at all.

Nice try :-)

(gdb) p 2
$1 = 2
(gdb) p $-1
$2 = 1

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-15 19:51                 ` Daniel Jacobowitz
@ 2006-05-15 22:44                   ` Jim Blandy
  2006-05-16 12:39                     ` Joel Brobecker
  0 siblings, 1 reply; 14+ messages in thread
From: Jim Blandy @ 2006-05-15 22:44 UTC (permalink / raw)
  To: pgilliam; +Cc: Eli Zaretskii, Fabio De Bona, gdb


Daniel Jacobowitz <drow@false.org> writes:
> On Mon, May 15, 2006 at 11:50:30AM -0700, Jim Blandy wrote:
>> 
>> Daniel Jacobowitz <drow@false.org> writes:
>> > On Fri, May 12, 2006 at 11:00:16AM -0700, Jim Blandy wrote:
>> >> Should we establish a convention of starting GDB-provided convenience
>> >> variable names with _, to avoid conflicting with script variables?
>> >> Thus, $_strcmp and $_strlen?
>> >
>> > Or should they have a $gdb_ prefix?  Or $_gdb_?
>> 
>> Or $this_is_a_gdb_variable_20060515_GNU_prvt_ISO_IEC_9989:1999_?  :)
>> (There must be some way to get a UUID and 'http' in there...)
>
> Hey, I was serious about $gdb_...

Oh.  Sorry.  I thought you were mocking my suggestion.

I guess I feel like we're encroaching on the user's space no matter
what we do, so we might as well make it terse.  And there are are $_
variables defined by GDB already, I think.  But I'd be happy with '_'
or 'gdb_'.

>> Hey, maybe we could just take over some prefix like $- that doesn't
>> conflict with the user and register namespace at all.
>
> Nice try :-)
>
> (gdb) p 2
> $1 = 2
> (gdb) p $-1
> $2 = 1

Darn.  I'd forgotten $ is a token all by itself.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: conditional breakpoint with (char* ) string condition
  2006-05-15 22:44                   ` Jim Blandy
@ 2006-05-16 12:39                     ` Joel Brobecker
  0 siblings, 0 replies; 14+ messages in thread
From: Joel Brobecker @ 2006-05-16 12:39 UTC (permalink / raw)
  To: Jim Blandy; +Cc: pgilliam, Eli Zaretskii, Fabio De Bona, gdb

> I guess I feel like we're encroaching on the user's space no matter
> what we do, so we might as well make it terse.  And there are are $_
> variables defined by GDB already, I think.  But I'd be happy with '_'
> or 'gdb_'.

I prefer $gdb_ to $_. It's not so much more typing and I find it clearer.

-- 
Joel


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2006-05-16  3:32 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-12 12:43 conditional breakpoint with (char* ) string condition Fabio De Bona
2006-05-12 12:45 ` Eli Zaretskii
2006-05-12 13:53   ` Daniel Jacobowitz
2006-05-12 16:09     ` Eli Zaretskii
2006-05-12 16:21       ` Daniel Jacobowitz
2006-05-12 18:00         ` PAUL GILLIAM
2006-05-12 18:59           ` Jim Blandy
2006-05-15 17:55             ` Daniel Jacobowitz
2006-05-15 19:17               ` Jim Blandy
2006-05-15 19:51                 ` Daniel Jacobowitz
2006-05-15 22:44                   ` Jim Blandy
2006-05-16 12:39                     ` Joel Brobecker
2006-05-12 20:36           ` Eli Zaretskii
2006-05-13 11:24             ` PAUL GILLIAM

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox