debugging python extension modules with MS vc++ 6.0

Jens Farmer jens.farmer at kodak.com
Tue Oct 15 23:21:29 CEST 2002


What's the easiest way to step into a python extension module written in
C++?  This seems to be a trivial
question but before you answer, let me describe what's going wrong.

I've contributed to and written ~3 python extension modules.  My
experience with writing extensions in
C / C++ is therefore a bit limited but suffice it to say that I've had
some moderate success.  (not once,
not twice, but thrice...)  Apparently I'm such a good programmer that
I've never had the need to debug
these extension modules by actually stepping into them with the
Microsoft IDE debugger.  ;)

Fearing that I will not be so lucky in the future, I've decided to prove
that I can indeed step into these
thingies whenever it becomes necessary.  Here's what I've tried...

1  Build my extension module for debugging making sure to use the "debug
multithreaded dll" runtime
    libraries.  (same as used for the python22_d.dll and python22_d.exe
targets)
2  Give my extension module a slightly different name than the non-debug
version.  I've started using
    the python convention of postpending "_d" to the module basename.
3  Make sure that the entrypoint to the dll (aka, initialization
function) has the same "_d" postpend to
    its name.
4  Link my extension to "python22_d.lib" instead of "python22.lib" so
that I don't end up binding to
    2 separate copies of the python interpretter.  (why does this happen
when I attempt to resolve
    my symbols through the non-debug version of python22.dll?)
5  Use the debug version of the python shell to import my extension.
(ie., "python_d.exe")

....but it doesn't work!

1  The debug version of "python_d.exe" can't seem to find ANY
extensions.  The PYTHONPATH
    is unchanged between using the debug vs non-debug shells.  (Hint:  I
can import sys and the
    sys.path is exactly the same)
2  If I attempt to use the non-debug "python.exe" shell then the shell
crashes with a version mismatch.
    ...but at least it finds my debug extension before crashing!


Is this some kind of initiation rite?  Is there a FAQ on the topic?
(I've looked a bit and I can't seem
to find it.)

                                                                    Jens

ps:  My favorite language?  .....aaaaaaaaaaahhhhhhhhh.




More information about the Python-list mailing list