# Phase A6.P1 cdb probe runner — 2026-05-21 # # Attaches cdb to a live retail acclient.exe with the a6-probe.cdb script. # Per-scenario usage: # .\tools\cdb\a6-probe-runner.ps1 -ScenarioTag "scen1_inn_doorway" # # Prerequisites (verify before invoking): # 1. Retail acclient.exe v11.4186 running and in-world (matches refs/acclient.pdb). # Verify with: py tools\pdb-extract\check_exe_pdb.py "C:\Turbine\Asheron's Call\acclient.exe" # 2. ACE running locally on 127.0.0.1:9000. # 3. Retail character at the scenario start position. # # Output: # docs\research\2026-05-21-a6-captures\\retail.log param( [Parameter(Mandatory=$true)] [string]$ScenarioTag ) $cdbExe = "C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe" if (-not (Test-Path $cdbExe)) { Write-Error "cdb.exe not found at $cdbExe. Install Microsoft Store WinDbg (~50 MB)." exit 1 } $scriptPath = Join-Path $PSScriptRoot "a6-probe.cdb" if (-not (Test-Path $scriptPath)) { Write-Error "a6-probe.cdb not found at $scriptPath." exit 1 } $captureDir = Join-Path $PSScriptRoot "..\..\docs\research\2026-05-21-a6-captures\$ScenarioTag" if (-not (Test-Path $captureDir)) { New-Item -ItemType Directory -Path $captureDir | Out-Null } $logPath = Join-Path $captureDir "retail.log" # Patch the .cdb script with the scenario-tagged log path (in-place substitution). $scriptContent = Get-Content $scriptPath -Raw $patchedScript = $scriptContent -replace '\$\{ARG_LOG_TAG\}', $ScenarioTag $tempScript = Join-Path $env:TEMP "a6-probe-$ScenarioTag.cdb" Set-Content -Path $tempScript -Value $patchedScript -Encoding ASCII Write-Host "Attaching cdb to acclient.exe with scenario tag '$ScenarioTag'..." Write-Host "Log: $logPath" Write-Host "(cdb auto-detaches at 50K total hits; or press Ctrl-Break to interrupt.)" # Capture cdb output to ASCII (not Tee-Object's default UTF-16 LE). # We sacrifice live console echo for greppable output — A6.P2 analysis # parses these logs by line and the UTF-16 BOM/NULs make every grep # pattern unmatch. Use `Get-Content $logPath -Tail 50 -Wait` in a # separate shell if live monitoring is needed. & $cdbExe -pn acclient.exe -cf $tempScript 2>&1 | Out-File -FilePath $logPath -Encoding ASCII Remove-Item $tempScript -ErrorAction SilentlyContinue Write-Host "" Write-Host "Capture complete. Log saved to $logPath"