public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* How to access files (open/read/close) from gdb script ?
       [not found] <6541ed4c050926074274c08518@mail.gmail.com>
@ 2005-09-26 14:45 ` David Lamy-Charrier
  2005-09-26 14:51   ` Ramana Radhakrishnan
  0 siblings, 1 reply; 14+ messages in thread
From: David Lamy-Charrier @ 2005-09-26 14:45 UTC (permalink / raw)
  To: gdb

Hello,

Does anyone of you know how to perform file operations
(open/read/close) from a GDB script ?

Each time GDB stops on a breakpoint I read a value from memory and then
I want to open a file on the host and search for the value in this
file ? any hints ?

Thanks,
David

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 14:45 ` How to access files (open/read/close) from gdb script ? David Lamy-Charrier
@ 2005-09-26 14:51   ` Ramana Radhakrishnan
  2005-09-26 15:53     ` David Lamy-Charrier
  0 siblings, 1 reply; 14+ messages in thread
From: Ramana Radhakrishnan @ 2005-09-26 14:51 UTC (permalink / raw)
  To: David Lamy-Charrier; +Cc: gdb

On Mon, 2005-09-26 at 16:44 +0200, David Lamy-Charrier wrote:
> Hello,
> 
> Does anyone of you know how to perform file operations
> (open/read/close) from a GDB script ?


Maybe you can integrate this with an expect / tcl script  ? AFAIK gdb
scripting 
does not allow such stuff. 

cheers
Ramana

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 14:51   ` Ramana Radhakrishnan
@ 2005-09-26 15:53     ` David Lamy-Charrier
  2005-09-26 17:03       ` Joel Brobecker
  2005-09-26 17:27       ` Jim Ingham
  0 siblings, 2 replies; 14+ messages in thread
From: David Lamy-Charrier @ 2005-09-26 15:53 UTC (permalink / raw)
  To: gdb

> Maybe you can integrate this with an expect / tcl script  ? AFAIK gdb
> scripting
> does not allow such stuff.

I am not sure to understand correclty:
you mean that I can write a tcl script to do that, but how can I then
launch the tcl script ?

Thanks,
David

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 15:53     ` David Lamy-Charrier
@ 2005-09-26 17:03       ` Joel Brobecker
  2005-09-26 17:22         ` Jim Ingham
  2005-09-26 17:27       ` Jim Ingham
  1 sibling, 1 reply; 14+ messages in thread
From: Joel Brobecker @ 2005-09-26 17:03 UTC (permalink / raw)
  To: David Lamy-Charrier; +Cc: gdb

> I am not sure to understand correclty:
> you mean that I can write a tcl script to do that, but how can I then
> launch the tcl script ?

You can launch any command from GDB using the "shell" command.

Just as a comment regarding TCL, I would personally use anything but
TCL. It's your choice: You can use bourne scripts, or even write a
program in C or Ada...

-- 
Joel

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:03       ` Joel Brobecker
@ 2005-09-26 17:22         ` Jim Ingham
  2005-09-26 17:34           ` David Lamy-Charrier
  2005-09-26 17:35           ` Daniel Jacobowitz
  0 siblings, 2 replies; 14+ messages in thread
From: Jim Ingham @ 2005-09-26 17:22 UTC (permalink / raw)
  To: Joel Brobecker; +Cc: gdb

Since ALL the gdb testsuites are written in Tcl (that's what Expect  
uses, and that is consequently what dejagnu uses) this seems a  
particularly unfortunate place to be airing your prejudices.

Jim

On Sep 26, 2005, at 10:03 AM, Joel Brobecker wrote:

>> I am not sure to understand correclty:
>> you mean that I can write a tcl script to do that, but how can I then
>> launch the tcl script ?
>>
>
> You can launch any command from GDB using the "shell" command.
>
> Just as a comment regarding TCL, I would personally use anything but
> TCL. It's your choice: You can use bourne scripts, or even write a
> program in C or Ada...
>
> -- 
> Joel
>

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 15:53     ` David Lamy-Charrier
  2005-09-26 17:03       ` Joel Brobecker
@ 2005-09-26 17:27       ` Jim Ingham
  2005-09-26 17:33         ` Daniel Jacobowitz
  1 sibling, 1 reply; 14+ messages in thread
From: Jim Ingham @ 2005-09-26 17:27 UTC (permalink / raw)
  To: David Lamy-Charrier; +Cc: gdb

The gdb testsuites are an example of how to do this.  They use  
"expect" to drive gdb and parse it's output.  There are also a lot of  
Tcl helper libraries in the testsuite/lib directory that manage  
stepping, etc.  So one pretty easy option is to use the dejagnu harness.

In any case, you can run the gdb testsuite (using "make check") to  
get an example of how to use Tcl & Expect to script gdb.

Also, if you can get the Insight debugger, that has a Tcl Interpreter  
build into gdb, and you can write scripts and just "source" them in  
Insight.  At that point, you can do anything you could do in plain  
Tcl...

I think DanielJ also has mentioned working on scripting bindings  
using the MI in the past, but I don't know the state of this.  That  
is a little bit more work, but would allow you to run gdb under  
another scripting language if you wanted.

Jim


On Sep 26, 2005, at 8:53 AM, David Lamy-Charrier wrote:

>> Maybe you can integrate this with an expect / tcl script  ? AFAIK gdb
>> scripting
>> does not allow such stuff.
>>
>
> I am not sure to understand correclty:
> you mean that I can write a tcl script to do that, but how can I then
> launch the tcl script ?
>
> Thanks,
> David
>

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:27       ` Jim Ingham
@ 2005-09-26 17:33         ` Daniel Jacobowitz
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel Jacobowitz @ 2005-09-26 17:33 UTC (permalink / raw)
  To: Jim Ingham; +Cc: David Lamy-Charrier, gdb

On Mon, Sep 26, 2005 at 10:28:46AM -0700, Jim Ingham wrote:
> I think DanielJ also has mentioned working on scripting bindings  
> using the MI in the past, but I don't know the state of this.  That  
> is a little bit more work, but would allow you to run gdb under  
> another scripting language if you wanted.

The current state is I'm hoping to piggyback on Nick's current
interpreter work but haven't tried lately.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:22         ` Jim Ingham
@ 2005-09-26 17:34           ` David Lamy-Charrier
  2005-09-26 17:36             ` Daniel Jacobowitz
  2005-09-26 17:35           ` Daniel Jacobowitz
  1 sibling, 1 reply; 14+ messages in thread
From: David Lamy-Charrier @ 2005-09-26 17:34 UTC (permalink / raw)
  To: gdb

> > You can launch any command from GDB using the "shell" command.
> >
> > Just as a comment regarding TCL, I would personally use anything but
> > TCL. It's your choice: You can use bourne scripts, or even write a
> > program in C or Ada...

Thanks a lot for your help,
but with an external script or program, I can not retrieve results of
the external program from my gdb script (except maybe the exit_code) ?

Is there anywhere a list of allowed functions from gdb script (I know
that printf, strcmp... are allowed) ?

Thanks,
David

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:22         ` Jim Ingham
  2005-09-26 17:34           ` David Lamy-Charrier
@ 2005-09-26 17:35           ` Daniel Jacobowitz
  2005-09-26 17:42             ` Jim Ingham
  1 sibling, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2005-09-26 17:35 UTC (permalink / raw)
  To: Jim Ingham; +Cc: Joel Brobecker, gdb

On Mon, Sep 26, 2005 at 10:23:10AM -0700, Jim Ingham wrote:
> Since ALL the gdb testsuites are written in Tcl (that's what Expect  
> uses, and that is consequently what dejagnu uses) this seems a  
> particularly unfortunate place to be airing your prejudices.

In fact I find it excessively appropriate; they are some of the worst
testsuite codes I've ever had the misfortune to work with and TCL is a
big part of the reason why.  As the currently most active TCL
programmer in the GDB project, I think I've earned the right to agree
with Joel.

If I had the luxury to redo it I'd do it in Anything But TCL, probably
by improving QMTest's support for interactive testing.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:34           ` David Lamy-Charrier
@ 2005-09-26 17:36             ` Daniel Jacobowitz
  2005-09-27 13:57               ` David Lamy-Charrier
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2005-09-26 17:36 UTC (permalink / raw)
  To: David Lamy-Charrier; +Cc: gdb

On Mon, Sep 26, 2005 at 07:34:10PM +0200, David Lamy-Charrier wrote:
> > > You can launch any command from GDB using the "shell" command.
> > >
> > > Just as a comment regarding TCL, I would personally use anything but
> > > TCL. It's your choice: You can use bourne scripts, or even write a
> > > program in C or Ada...
> 
> Thanks a lot for your help,
> but with an external script or program, I can not retrieve results of
> the external program from my gdb script (except maybe the exit_code) ?
> 
> Is there anywhere a list of allowed functions from gdb script (I know
> that printf, strcmp... are allowed) ?

They aren't "allowed" per se.  You're calling functions in the program
you're debugging when you do this.

You have two options: use "shell" and its limitations, or wrap GDB in
something that processes its input and output, like Expect.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:35           ` Daniel Jacobowitz
@ 2005-09-26 17:42             ` Jim Ingham
  2005-09-26 21:48               ` Joel Brobecker
  0 siblings, 1 reply; 14+ messages in thread
From: Jim Ingham @ 2005-09-26 17:42 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Joel Brobecker, gdb

I totally disagree with this.  The reason why so much of the gdb  
testsuite is horrible is that it was written by people who never  
bothered to learn Tcl, and instead programmed it wishing it was "sh"  
- which is a pretty perverse thing to wish anyway.

If you take the trouble to actually learn how it works, rather than  
just cutting & pasting examples you don't fully understand, it is a  
perfectly fine language.  Any language will work poorly for you if  
you have decided up front that it's going to do so.

Jim


On Sep 26, 2005, at 10:35 AM, Daniel Jacobowitz wrote:

> On Mon, Sep 26, 2005 at 10:23:10AM -0700, Jim Ingham wrote:
>
>> Since ALL the gdb testsuites are written in Tcl (that's what Expect
>> uses, and that is consequently what dejagnu uses) this seems a
>> particularly unfortunate place to be airing your prejudices.
>>
>
> In fact I find it excessively appropriate; they are some of the worst
> testsuite codes I've ever had the misfortune to work with and TCL is a
> big part of the reason why.  As the currently most active TCL
> programmer in the GDB project, I think I've earned the right to agree
> with Joel.
>
> If I had the luxury to redo it I'd do it in Anything But TCL, probably
> by improving QMTest's support for interactive testing.
>
> -- 
> Daniel Jacobowitz
> CodeSourcery, LLC
>

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:42             ` Jim Ingham
@ 2005-09-26 21:48               ` Joel Brobecker
  0 siblings, 0 replies; 14+ messages in thread
From: Joel Brobecker @ 2005-09-26 21:48 UTC (permalink / raw)
  To: Jim Ingham; +Cc: Daniel Jacobowitz, gdb

> If you take the trouble to actually learn how it works, rather than  
> just cutting & pasting examples you don't fully understand, it is a  
> perfectly fine language.  Any language will work poorly for you if  
> you have decided up front that it's going to do so.

Sorry guys, my intention wasn't really to bash on TCL at all,
just to let him know that TCL was not the only option for writing
his external tool. The point was for him to use whatever language
he's most familiar with, even if it is TCL.

I'm sorry that my personal opinion of the language seeped through,
again, that was not my intention.

-- 
Joel

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-26 17:36             ` Daniel Jacobowitz
@ 2005-09-27 13:57               ` David Lamy-Charrier
  2005-09-27 13:59                 ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: David Lamy-Charrier @ 2005-09-27 13:57 UTC (permalink / raw)
  To: gdb

> > Is there anywhere a list of allowed functions from gdb script (I know
> > that printf, strcmp... are allowed) ?
>
> They aren't "allowed" per se.  You're calling functions in the program
> you're debugging when you do this.
>
> You have two options: use "shell" and its limitations, or wrap GDB in
> something that processes its input and output, like Expect.

Thanks for your hints,
but I am using a GUI front-end (Elicpse) for GDB, so I can't process
GDB's input and ouput.
That's why I was trying to do it from a GDB script...


By the way, in a "debugguee" program, is there any way to know if the
program is currently running "in" GDB or if it is freely running
(without debuuger connected) ??


Thanks again,
David

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

* Re: How to access files (open/read/close) from gdb script ?
  2005-09-27 13:57               ` David Lamy-Charrier
@ 2005-09-27 13:59                 ` Daniel Jacobowitz
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel Jacobowitz @ 2005-09-27 13:59 UTC (permalink / raw)
  To: David Lamy-Charrier; +Cc: gdb

On Tue, Sep 27, 2005 at 03:57:12PM +0200, David Lamy-Charrier wrote:
> By the way, in a "debugguee" program, is there any way to know if the
> program is currently running "in" GDB or if it is freely running
> (without debuuger connected) ??

In general there shouldn't be.  It's supposed to be transparent.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

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

end of thread, other threads:[~2005-09-27 13:59 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <6541ed4c050926074274c08518@mail.gmail.com>
2005-09-26 14:45 ` How to access files (open/read/close) from gdb script ? David Lamy-Charrier
2005-09-26 14:51   ` Ramana Radhakrishnan
2005-09-26 15:53     ` David Lamy-Charrier
2005-09-26 17:03       ` Joel Brobecker
2005-09-26 17:22         ` Jim Ingham
2005-09-26 17:34           ` David Lamy-Charrier
2005-09-26 17:36             ` Daniel Jacobowitz
2005-09-27 13:57               ` David Lamy-Charrier
2005-09-27 13:59                 ` Daniel Jacobowitz
2005-09-26 17:35           ` Daniel Jacobowitz
2005-09-26 17:42             ` Jim Ingham
2005-09-26 21:48               ` Joel Brobecker
2005-09-26 17:27       ` Jim Ingham
2005-09-26 17:33         ` Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).