debugging python extension modules with MS vc++ 6.0
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
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
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.
....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.)
ps: My favorite language? .....aaaaaaaaaaahhhhhhhhh.
More information about the Python-list