Re: psycopg2 and Python 2.6a1

Jason Erickson <[email protected]>
Newsgroups gmane.comp.python.db.psycopg.devel
Message-ID <[email protected]>
On Tue, 4 Mar 2008, Patrick Hartling wrote:

> I am evaluating the use of Python 2.6 as the foundation for our software, and 
> I am running into a crash with psycopg2 on Windows. For some reason, I have 
> been unable to get Visual Studio to show me any debugging details in the 
> stack trace for the code in _psycopg2.pyd, and I was hoping that someone here 
> might have some tips.
>
> In my efforts to track this down, I have tried several things. At the moment, 
> I am running a release build of the Python interpreter that I built myself so 
> that I could get the vc90.pdb file for the interpreter. I have no problems 
> tracing through code in the Pyhton interpreter, but I have not been able to 
> get _psycopg2.pyd to build in such a way that the debugger can extract any 
> information from it. I have built psycopg2 source from the 2_0_x SVN branch 
> as a release binary with modifications to 
> C:\Python26\Lib\distutils\msvc9compiler.py so that /Z7 and /Od are used when 
> building extension modules linked against the MSVC release runtime. This is 
> what I would prefer to do since, IIUC, the debugging symbols are built into 
> the binary. Normally, this approach works for me without problems, though 
> this is the first time that I have tried to debug a Python extension module 
> on Windows that I did not write myself. I also tried building psycopg2 using 
> /Zi and /Od to make a specific PDB file for _psycopg2.pyd, but the debugger 
> never finds it no matter where I put it.
>
> In case it helps, I have attached the stack trace that I do get. Any guidance 
> would be greatly appreciated.
>
> -Patrick

Patrick,

I have built psycopg with debugging symbols successfully on the windows 
platform.  My build environment is at home, so what follows is from 
memory...

When I compiled debug symbol builds, I did not change any distutils files. 
The catch is that I used the debug version of python (python_d), and I 
built the pyscopg with the --debug switch.  Ahh, I see from the stack 
trace that you have several other files being imported, too, which 
explains why you are using the release version of python.  You would need 
'debug' builds of those files, too.  That makes this method more 
challenging :)

After pondering some more, I remember having a similar situation.  I ended 
up creating a VS project to compile psycopg with the debug symbols, yet 
link against the release version of python.  When doing this, I had to do 
the following: Setup the include and library directories, add the 
libraries that it links against, setup the defines that are located at the 
top of the setup.cfg file, set the name for the 'dll' correctly, and 
include all the 'c' files.

I do not recall if I tried modifing the distutils code or not for this 
situation.  I have modified distutils for various reasons in the past with 
mixed results, and I can not remember if this was one of those time, or if 
it was successful.  My experience has been hit and miss with making 
changes with distutils, but I'm sure that is 'operator error' more than 
anything else.

If you would like, I can look and see if I still have the VS file (VS 2003 
since it was built for use with Python 2.5), and send it to you later on 
tonight.  You would have to change the paths to your file structure 
layout, but I believe that is about it.

-jason
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.