debugging python extension modules with MS vc++ 6.0

Dilton McGowan II diltonm at pacbell.net
Wed Oct 16 01:21:02 CEST 2002


"Jens Farmer" <jens.farmer at kodak.com> wrote in message
news:3DAC86D9.93AFEE62 at kodak.com...
> 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.
>

With the help of a very knowledgable co-worker, we managed to get this to
work successfully by setting the IDE Project Settings under "Executable for
debug session" to point to python_d.exe and "program arguments" to the DLL
extension.





More information about the Python-list mailing list