<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    On 08.01.2018 0:11, Steve Dower wrote:<br>
    <blockquote type="cite"
      cite="mid:20180107211111.B73001200A1@relay2.telecom.mipt.ru">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-AU">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.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU">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.<o:p></o:p></span></p>
      </div>
    </blockquote>
    Distutils' designers seem to have thought differently.<br>
    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.<br>
    <br>
    As a consequence,<br>
    * 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.<br>
    * Neither can I compile an extension for release Python without
    optimizations.<br>
    <br>
    I'm at a loss here. Either I'm missing something, or with the
    current build system, it's impossible to debug extensions!<br>
    <blockquote type="cite"
      cite="mid:20180107211111.B73001200A1@relay2.telecom.mipt.ru">
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-AU"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU">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).<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU">Cheers,<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-AU">Steve</span></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Top-posted from my Windows phone</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div
          style="mso-element:para-border-div;border:none;border-top:solid
          #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
          <p class="MsoNormal" style="border:none;padding:0in"><b>From:
            </b><a href="mailto:python-ideas@python.org"
              moz-do-not-send="true">Ivan Pozdeev via Python-ideas</a><br>
            <b>Sent: </b>Saturday, December 30, 2017 13:01<br>
            <b>To: </b><a href="mailto:python-ideas@python.org"
              moz-do-not-send="true">python-ideas@python.org</a><br>
            <b>Subject: </b>[Python-ideas] Allow to compile debug
            extension against releasePython in Windows</p>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">The Windows version of pyconfig.h has the
          following construct:</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">     if defined(_DEBUG)</p>
        <p class="MsoNormal">            pragma
          comment(lib,"python37_d.lib")</p>
        <p class="MsoNormal">     elif defined(Py_LIMITED_API)</p>
        <p class="MsoNormal">            pragma
          comment(lib,"python3.lib")</p>
        <p class="MsoNormal">     else</p>
        <p class="MsoNormal">            pragma
          comment(lib,"python37.lib")</p>
        <p class="MsoNormal">     endif /* _DEBUG */</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">which fails the compilation of a debug
          version of an extension. Making </p>
        <p class="MsoNormal">debugging it... difficult.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Perhaps we could define some other
          constant?</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I'm not sure whether such compilation is a
          good idea in general, so </p>
        <p class="MsoNormal">asking here at first.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">-- </p>
        <p class="MsoNormal">Regards,</p>
        <p class="MsoNormal">Ivan</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">_______________________________________________</p>
        <p class="MsoNormal">Python-ideas mailing list</p>
        <p class="MsoNormal"><a class="moz-txt-link-abbreviated" href="mailto:Python-ideas@python.org">Python-ideas@python.org</a></p>
        <p class="MsoNormal"><a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/python-ideas">https://mail.python.org/mailman/listinfo/python-ideas</a></p>
        <p class="MsoNormal">Code of Conduct:
          <a class="moz-txt-link-freetext" href="http://python.org/psf/codeofconduct/">http://python.org/psf/codeofconduct/</a></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Regards,
Ivan</pre>
  </body>
</html>