[Python-Dev] No longer enable Py_TRACE_REFS by default in debug build
On 10Apr2019 1917, Nathaniel Smith wrote:
> It sounds like --with-pydebug has accumulated a big grab bag of
> unrelated features, mostly stuff that was useful at some point for
> some CPython dev trying to debug CPython itself? It's clearly not
> designed with end users as the primary audience, given that no-one
> knows what it actually does and that it makes third-party extensions
> really awkward to run. If that's right then I think Victor's plan of
> to sort through what it's actually doing makes a lot of sense,
> especially if we can remove the ABI breaking stuff, since that causes
> a disproportionate amount of trouble.
Does it really cause a "disproportionate" amount of trouble? It's
definitely not meant for anyone who isn't working on C code, whether in
CPython, an extension or a host application. If you want to use
third-party extensions and are not able to rebuild them, that's a very
good sign that you probably shouldn't be on the debug build at all.
Perhaps the "--with-pydebug" option is too attractive? (Is it the
default?) That's easily fixed.
>> The reason we ship debug Python binaries is because debug builds use a
>> different C Runtime, so if you do a debug build of an extension module
>> you're working on it won't actually work with a non-debug build of CPython.
> ...But this is an important point. I'd forgotten that MSVC has a habit
> of changing the entire C runtime when you turn on the compiler's
> debugging mode.
Technically they are separate options, but most project files are
configured such that *their* Debug/Release switch affects both the
compiler options (optimization) and the linker options (C runtime linkage).
> Is it true that if the interpreter is built against ucrtd.lib, and an
> extension module is built against ucrt.lib, then they'll have
> incompatible ABIs and not work together? And that this detail is part
> of what's been glommed together into the "d" flag in the soabi tag on
Yep, except it's not actually in the soabi tag, but it's the "_d" suffix
on module/executable names.
> Is it possible for the Windows installer to include PDB files (/Zi
> /DEBUG) to allow debuggers to understand the regular release
> executable? (That's what I would have expected to get if I checked a
> box labeled "Download debug binaries".)
That box is immediately below one labelled "Download debug symbols", so
hopefully seeing it in context would have set the right expectation.
(And since I have them, there were 1.3 million downloads of the symbol
packages via this option in March, but we also enable it by default via
Visual Studio and that's responsible for about 1 million of those.)