Best way of debigging a C extension

Paul Moore p.f.moore at gmail.com
Thu Dec 11 14:51:35 EST 2008


I'm writing a C extension. My environment is Python 2.5, with the
mingw compiler, on Windows XP. At the moment I'm debugging by
scattering printf() statements around, but it's not always easy. Is
there a better way of debugging - particularly for diagnosing crashes?

I have gdb (although I've hardly used it, but I can learn :-)) but if
I try building my extension with python setup.py build --debug, I get
an error because -lpython25_d does not exist. I'm not surprised by
this, as I don't have a debug build of Python - but that should be OK,
I'm only looking for debugging info from my code.

I tried copying libpython25.a to libpython25_d.a - my extension now
builds, but the resulting pyd is XXX_d.pyd, which won't import. If I
rename this to XXX.pyd, I can import and things seem to work - but it
seems a bit of a roundabout way of doing things. Is there a simpler
way that I've missed? It seems to me that this (debugging a C
extension without compiling a debug build of Python) would be a fairly
common situation, so I would have expected a "cleaner" way of doing
it.

At the very least, a documentation patch to explain the best way of
doing things might be useful. I'll see what I can put together based
on the responses I get here.

Thanks,
Paul.



More information about the Python-list mailing list