Re: Proposal for debugging of server-side stored procedures

From: Thomas Hallgren <thomas(at)tada(dot)se>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org, Mark Cave-Ayland <m(dot)cave-ayland(at)webbased(dot)co(dot)uk>
Subject: Re: Proposal for debugging of server-side stored procedures
Date: 2006-05-29 19:07:26
Message-ID: 447B466E.6090801@tada.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane wrote:
> Thomas Hallgren <thomas(at)tada(dot)se> writes:
>> I think this is a bad idea. PL/Java will use either shared memory or a
>> socket to attach and as you already mentioned, when using C, a gdb
>> will attach directly using the pid. I wouldn't be too surprised if
>> Perl, Python, and PHP all have a similar solution and thus have no
>> benefit from additions to the FE/BE protocol. IMO, debugging should be
>> language specific and take place in a separate channel. There's no
>> gain whatsoever mixing it with the FE/BE protocol.
>
> It may well be that for plperl and friends we can kick the problem off
> to language-specific debuggers --- indeed, one of the first things we
> need to do is look at those to see what we can avoid reinventing.
> But what of plpgsql?
>
Ideally, all pl's should use the same protocol. It should be language agnostic and allow
different regions of the code to origin from different languages. That way, it would be
possible to single step a plpgsql function that in turn calls a function in pljava.
Incidentally, the JDWP (Java Debug Wire Protocol) was designed to do just that. But I think
it would be very complicated to cross language boundaries even if we did use that.

The JDWP and the architecture that surrounds it might be a good source for inspiration
though. See: http://java.sun.com/j2se/1.5.0/docs/guide/jpda/architecture.html.

> Also, any solution of this type probably requires that the person doing
> debugging have database superuser access (in fact, be logged directly
> into the server machine as the postgres user). It'd be nice to have an
> approach that could be used by non-superusers to debug their trusted-PL
> functions.
>
Indeed. In my case, it's a matter of who starts the VM and what options that are passed to
it (given certain options, the JVM will listen to a port or a semaphore that controls a
region of shared memory). That in turn is controlled using GUC settings so for PL/Java I
think it would be possible to set it up that way.

Regards,
Thomas Hallgren

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Yannick 2006-05-29 19:20:00 Compile libpq with vc8
Previous Message Tom Lane 2006-05-29 18:29:06 Re: Proposal for debugging of server-side stored procedures