* Passing data to a shell'ed command
@ 2001-07-03 14:58 Shawn McCarney
2001-07-03 23:56 ` Eli Zaretskii
0 siblings, 1 reply; 2+ messages in thread
From: Shawn McCarney @ 2001-07-03 14:58 UTC (permalink / raw)
To: gdb
I need to create a user-defined command that reads some memory and then
passes it a formatting program. I am assuming the formatting program would
be run via the 'shell' command'. Is there any way to do this?
Below is a list of the things that I have thought of. None of them seem to
be possible:
* Writing the command output to a file (this is my preferred approach)
* Passing output as stdin to a child process
* Setting an environment variable which contains the output
* Passing output as command line parameters to a child process
The data could be passed as command parameters if the 'shell' command
expanded convenience variables. However, it doesn't seem to.
The only solution I have found so far is to require the user to run DDD and
then parse the ~/.ddd/log file. However, this is a strange restriction on
the users. It also might not work reliably due to buffered I/O.
Another possible solution would be to call C runtime I/O functions as part
an expression in a 'set' command. However, these functions would be
running on the target, not the gdb host machine right?
Any other ideas? Someone must have solved this already...
Shawn McCarney (shawnmm@us.ibm.com)
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Passing data to a shell'ed command
2001-07-03 14:58 Passing data to a shell'ed command Shawn McCarney
@ 2001-07-03 23:56 ` Eli Zaretskii
0 siblings, 0 replies; 2+ messages in thread
From: Eli Zaretskii @ 2001-07-03 23:56 UTC (permalink / raw)
To: Shawn McCarney; +Cc: gdb
On Tue, 3 Jul 2001, Shawn McCarney wrote:
> I need to create a user-defined command that reads some memory and then
> passes it a formatting program. I am assuming the formatting program would
> be run via the 'shell' command'. Is there any way to do this?
>
> Below is a list of the things that I have thought of. None of them seem to
> be possible:
>
> * Writing the command output to a file (this is my preferred approach)
> * Passing output as stdin to a child process
> * Setting an environment variable which contains the output
> * Passing output as command line parameters to a child process
I'd suggest
* add a special function to the debuggee which will accept the
command line for the formatting program, and then run that
program. Then use the GDB `call' command to invoke that function
from GDB.
> Another possible solution would be to call C runtime I/O functions as part
> an expression in a 'set' command. However, these functions would be
> running on the target, not the gdb host machine right?
Ah, you are debugging a remote target? Than my suggestion won't work
for you.
Sounds like a good reason for extending `shell', or maybe a new
command.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2001-07-03 23:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-03 14:58 Passing data to a shell'ed command Shawn McCarney
2001-07-03 23:56 ` Eli Zaretskii
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox