Raw Sockets vs. What?

M

Matt

Hi,

I'm new to Python (1 week), but I'm writing an out-of-process debugger
for a Python ide. I tried execFile first, but stuff leaked over from
the wx libraries we are using. And, anyway, the next code set is PHP so
this has to be tackled anyway.

So, the question: How to communicate between two instances of the
python interpreter? Specifically, I need to pass the api and objects
from bdb, the base class for the debugger. One interpreter runs the
ide, the other the debugger and client code. We were talking and just
opening a socket and doing the rest from there came up. This, to me,
(admitedly a java guy) seems like a lot of work. If it were just
setting breakppoints and stepping, well ok. But I also want to have
introspection on the debugger side objects.

I could use raw sockets and write a bunch of stuff.

Does anyone have a suggestion about some pythonesque way to tackle
this?

Many thanks in advance,
Matt
 
D

Diez B. Roggisch

So, the question: How to communicate between two instances of the
python interpreter? Specifically, I need to pass the api and objects
from bdb, the base class for the debugger. One interpreter runs the
ide, the other the debugger and client code. We were talking and just
opening a socket and doing the rest from there came up. This, to me,
(admitedly a java guy) seems like a lot of work. If it were just
setting breakppoints and stepping, well ok. But I also want to have
introspection on the debugger side objects.

I could use raw sockets and write a bunch of stuff.

Does anyone have a suggestion about some pythonesque way to tackle
this?

I've found pyro useful for a similar task: I fork, create a pipe and in the
child I create a pyro daemon to run a remote object. The uri of that then
is passed using the pipe, so that the parent can get a reference to the
remote object.

I do the whole exercise due to not killable threads in python - so that I
can terminate the subprocess.

The nice thing about pyro is that it is like corba without the declartive
stuff - just use it.

You also migh check out the eric ide - it has an out-of-process debugger, so
Detlev must have found a solution :)
 
F

Fredrik Lundh

Matt said:
So, the question: How to communicate between two instances of the
python interpreter? Specifically, I need to pass the api and objects
from bdb, the base class for the debugger. One interpreter runs the
ide, the other the debugger and client code. We were talking and just
opening a socket and doing the rest from there came up. This, to me,
(admitedly a java guy) seems like a lot of work. If it were just
setting breakppoints and stepping, well ok. But I also want to have
introspection on the debugger side objects.

I could use raw sockets and write a bunch of stuff.

Does anyone have a suggestion about some pythonesque way to tackle
this?

let the debugger listen to a randomly chosen local port, let the client wrapper
connect back to the debugger via that port, and use a suitable marshalling layer
to wrap commands and data for the introspection part. This has been done many
times by many IDE developers (including yours truly). Designing the "RPC API"
is the only tricky part here, and it doesn't have to be that tricky (some people
are known to use really simply stuff, such as XML-RPC, for this purpose).

Unless I'm completely mistaken, recent versions of IDLE have a remote debugger
designed and implemented by GvR himself. Maybe you could use that code right
out of the box?

</F>
 
M

Matt

Thanks for the responses--they were very helpful. I've looked at IDLE
and pyro and I think I'll try using pyro for this first version.

--Matt
 
M

Matt

Just thought I'd follow up to say that I'm using XML-RPC after all. Not
that I was intimidated when I finally learned that Fredrik had written
the thing. No, it was more the issue that we want to write a php
debugger next and XML-RPC plays well with php, too.
Thanks again,
--Matt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top