help, how to get a debug build on windows (python37_d.lib)

Hi lldb-dev.

I can’t seem to figure out how to build a debug lldb on windows. It wants to link against a debug version of Python, which isn’t there.

My cmake line looks like this:

cmake -G Ninja "-DPYTHON_HOME=C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64"
“-DLLVM_ENABLE_PROJECTS=clang;lldb;libcxx;libcxxabi;lld” "-DSWIG_EXECUTABLE=C:\ProgramData\chocolatey\bin\swig.exe"
“C:\Users\smoofra\llvm-project\llvm”

I also made this change, to tell it to link against the release python.

— a/lldb/cmake/modules/LLDBConfig.cmake
+++ b/lldb/cmake/modules/LLDBConfig.cmake
@@ -227,7 +227,7 @@ function(find_python_libs_windows)
else()

Lookup for concrete python installation depending on build type

if (CMAKE_BUILD_TYPE STREQUAL Debug)

  • set(LOOKUP_DEBUG_PYTHON TRUE)
  • set(LOOKUP_DEBUG_PYTHON FALSE)
    else()
    set(LOOKUP_DEBUG_PYTHON FALSE)
    endif()

But somehow at the very end, the link still fails because python37_d.lib isn’t there.

Anybody know what I’m doing wrong? Thank you.

Hi Larry,

I don't know the full details, but it is my understanding that due to how windows runtime libraries work (they have a separate debug and release CRT), all libraries in a single application need be linked against the same CRT flavour. IIRC, the default python installation does not come with a debug python, but it should be possible to install it somehow (possibly via checking some box in the installation dialog, but I don't remember the details).

It should also be possible to create a "fake" debug build by setting the CMAKE_BUILD_TYPE to Release, and enabling debug info (and disabling optimizations) via CMAKE_CXX_FLAGS, but it's probably better to just get the debug python installed.

pl

Hi Larry,

Like Pavel suggests, the option for installing Python debug binaries is here:

image001.png

You would need to re-start the Python installer, and choose “Customize installation”, then you get an “Optional features” page, then a second menu page “Advanced Options” where you need to select “Download debug binaries”. This will create the python_d.exe that LLDB needs. Ensure that -DPYTHON_HOME properly points to the folder that you choose during installation. Also ensure that you have the GnuWin32 tools installed and visible in %PATH%, otherwise the LLDB tests won’t work.

Best,

Alex.

-----Message d’origine-----

Hi Larry,

You can tell the Python installer to install the debug libraries.

I recently switch from VS 2015 to VS 2017 to build LLDB. My debug builds stopped working – it couldn’t link with the Python debug library, even though I had it in the right place. My guess is the Python I’m using (3.5.1) was built with 2015, and the 2017 linker didn’t like linking against the debug library built with 2015.

I switched from a Debug build to RelWithDebInfo, and it worked.

Ted