[Python-ideas] Allow to compile debug extension against releasePython in Windows

Ivan Pozdeev vano at mail.mipt.ru
Tue Jan 9 13:35:26 EST 2018


On 08.01.2018 0:11, Steve Dower wrote:
>
> It’s not a good idea. You end up with two different C runtimes in 
> memory that cannot communicate, and many things will not work properly.
>
> If you compile your debug build extension with the non-debug CRT (/MD 
> rather than /MDd) you will lose asserts, but otherwise it will work 
> fine and the quoted code picks the release lib.
>
Distutils' designers seem to have thought differently.
Whether the extension is linked against pythonxx_d.lib is governed by 
the --debug switch to the `build' command rather than the type of the 
running Python. Compiler optimization flags are inserted according to 
it, too.

As a consequence,
* I cannot install an extension into debug Python at all 'cuz `bdist_*' 
and `install' commands don't support --debug and invoke `debug' 
internally without it.
* Neither can I compile an extension for release Python without 
optimizations.

I'm at a loss here. Either I'm missing something, or with the current 
build system, it's impossible to debug extensions!
>
> Or if you like, when you install Python 3.5 or later there are 
> advanced options to install debug symbols and binaries. You can use a 
> proper debug build against the debug binaries (python_d.exe).
>
> Cheers,
>
> Steve
>
> Top-posted from my Windows phone
>
> *From: *Ivan Pozdeev via Python-ideas <mailto:python-ideas at python.org>
> *Sent: *Saturday, December 30, 2017 13:01
> *To: *python-ideas at python.org <mailto:python-ideas at python.org>
> *Subject: *[Python-ideas] Allow to compile debug extension against 
> releasePython in Windows
>
> The Windows version of pyconfig.h has the following construct:
>
>     if defined(_DEBUG)
>
>            pragma comment(lib,"python37_d.lib")
>
>     elif defined(Py_LIMITED_API)
>
>            pragma comment(lib,"python3.lib")
>
>     else
>
>            pragma comment(lib,"python37.lib")
>
>     endif /* _DEBUG */
>
> which fails the compilation of a debug version of an extension. Making
>
> debugging it... difficult.
>
> Perhaps we could define some other constant?
>
> I'm not sure whether such compilation is a good idea in general, so
>
> asking here at first.
>
> -- 
>
> Regards,
>
> Ivan
>
> _______________________________________________
>
> Python-ideas mailing list
>
> Python-ideas at python.org
>
> https://mail.python.org/mailman/listinfo/python-ideas
>
> Code of Conduct: http://python.org/psf/codeofconduct/
>

-- 
Regards,
Ivan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180109/73d1ae1c/attachment.html>


More information about the Python-ideas mailing list