@samitouri / QOSAMI-WSL / commits / 63694825

Publish PDBs for the third-party binaries we ship (#40765)

The build pipeline collects symbols by scanning bin\<platform>\Release for PDBs, but wsldevicehost.dll, wsldeps.dll, and WSLDVCPlugin.dll all come from NuGet packages whose PDBs never get staged there. As a result their symbols are never published, and Watson can only resolve crashes to the module name (e.g. wsldevicehost.dll!unknown) instead of an actual function. Link each shipped binary's PDB into bin alongside the DLL so the symbol publishing step picks it up. wsldevicehost.dll is packaged straight from its NuGet package rather than from bin, so only its PDB needs linking. Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Ben Hillis committed Jun 10, 2026 at 16:16 UTC 63694825d07fd94c58b100c3fe3963ae818a68b9
1 file changed +10
CMakeLists.txt
+10
@@ -230,8 +230,18 @@ if (DEFINED PIPELINE_BUILD_ID)
230 endif()
231
232 set(PACKAGE_CERTIFICATE ${GENERATED_DIR}/dev-cert.pfx)
233 +
234 +# Link the third-party binaries we ship (and their PDBs) into bin so packaging
235 +# and the pipeline's symbol publishing step find them. Without the PDBs here,
236 +# Watson can't resolve function names in their crash frames.
237 +string(REPLACE ".dll" ".pdb" WSLG_TS_PLUGIN_PDB ${WSLG_TS_PLUGIN_DLL})
238 file(CREATE_LINK ${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/${WSLG_TS_PLUGIN_DLL} ${BIN}/${WSLG_TS_PLUGIN_DLL})
239 +file(CREATE_LINK ${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/${WSLG_TS_PLUGIN_PDB} ${BIN}/${WSLG_TS_PLUGIN_PDB})
240 file(CREATE_LINK ${WSLDEPS_SOURCE_DIR}/bin/wsldeps.dll ${BIN}/wsldeps.dll)
241 +file(CREATE_LINK ${WSLDEPS_SOURCE_DIR}/bin/wsldeps.pdb ${BIN}/wsldeps.pdb)
242 +# wsldevicehost.dll is packaged directly from its NuGet package, so only its PDB
243 +# needs linking into bin for symbol publishing.
244 +file(CREATE_LINK ${WSL_DEVICE_HOST_SOURCE_DIR}/bin/${TARGET_PLATFORM}/wsldevicehost.pdb ${BIN}/wsldevicehost.pdb)
245
246 if (${SKIP_PACKAGE_SIGNING})
247 set(PACKAGE_SIGN_COMMAND echo Skipped package signing for:)