[Python-Dev] Should there be a source-code checksum in module objects?
Guido van Rossum
guido at python.org
Mon Feb 2 20:01:56 CET 2009
On Mon, Feb 2, 2009 at 10:48 AM, <rocky at gnu.org> wrote:
> Brett Cannon writes:
> > On Mon, Feb 2, 2009 at 00:52, Rocky Bernstein <rocky at gnu.org> wrote:
> > > As I've mentioned, I've been re-examining from ground up the whole
> > > state of affairs in writing a debugger.
> > >
> > > One of the challenges of a debugger or any source-code analysis tool
> > > is verifying that the source-code that the tool is reporting on
> > > corresponds to the compiled object under execution. (For debuggers,
> > > this problem becomes more likely to occur when you are debugging on a
> > > computer that isn't the same as the computer where the code is
> > > running.)
> > >
> > > Is there a checksum of the source text computed and stored in
> > > compilation?
> >
> > No, only the bytecode version used, the mtime of the source the
> > bytecode is derived from, and the bytecode itself.
> >
> > > If not, should there be one?
> >
> > If you are planning to read this directly from the .pyc file then it
> > is not needed as the mtime timestamp in the .pyc should in general be
> > enough to detect changes to the source.
>
> I'm not sure I understand. I am debugging program P on computer A
> which may have (probably did?) do a compile. I am on computer B which
> I have the source code. Maybe it is checked out from a version control
> system same as on A. Maybe it has bytecodes, maybe not. But the
> expectation is that the programmer thinks it matches what is currently
> on A that the programmer is debuggging. Can I tell for certain?
>
> Suppose I'm writing a code coverage tool which can accumulate
> statistics over many runs. I notice that the date on the Python file
> changes, again one way it might is that it might be checked out fresh
> and subversion for example will put in a current timestamp. How can
> the code coverage tool know that the source hasn't changed even though
> the file may have disappeared or maybe was modified several times but
> in the end stays the same?
Unfortunately this use case (remote debugging) was not considered when
the code object was designed and implemented. I don't know how
important the use case is in general, but clearly it is important to
you.
I suggest that you move this discussion to python-ideas to ferret out
a possible implementation and API; or to find out work-arounds.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list