Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4d8ba50
Copilot instructions + test filtering fix (#1587)
gregg-miskelly Jun 18, 2026
a832560
Merge pull request #1588 from microsoft/dev/waan/stopVsDbgTest
WardenGnaw Jun 18, 2026
729de54
Refactor Docker transport into shared base classes and strategy patte…
WardenGnaw Jun 14, 2026
cd89489
Add Podman container support for Attach to Process (#1582)
WardenGnaw Jun 19, 2026
97dd653
Merge 'feature/podman' into 'main' (#1589)
WardenGnaw Jun 19, 2026
6b2a477
Merge pull request #1590 from microsoft/dev/waan/fixDebuggerTestingPi…
WardenGnaw Jun 20, 2026
768ae31
Auto-generated baselines by 1ES Pipeline Templates (#1591)
microsoft-github-policy-service[bot] Jun 22, 2026
dbcbb16
Enable nullable referenrce types in DebugEngineHost (#1592)
gregg-miskelly Jun 22, 2026
bf363d3
LEGO: Pull request from lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_…
csigs Jun 29, 2026
96c4fd5
LEGO: Pull request from lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_…
csigs Jun 29, 2026
1043c02
LEGO: Pull request from lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_…
csigs Jun 29, 2026
dd91e13
Prepare for nullable reference types in MICore (#1595)
gregg-miskelly Jun 29, 2026
0921c70
Enable nullable reference types in MICore (#1603)
gregg-miskelly Jun 30, 2026
a5d90d8
Fix race condition monitor thread in RegistryMonitor (#1604)
SachinM123 Jul 2, 2026
bb02552
Don't expose a memory reference for non-pointer evaluation results (#…
tieo Jul 6, 2026
2d1de85
Merge pull request #1608 from microsoft/dev/wardengnaw/updateMinor8
WardenGnaw Jul 10, 2026
ca8f423
handle synthetic frames produced by GDB FrameFilter without a level (…
tzcnt Jul 11, 2026
1743a60
Auto-deploy debug adapter when building CppTests (#1610)
gregg-miskelly Jul 13, 2026
8ee6a04
Support environment variables in config.xml (#1611)
gregg-miskelly Jul 14, 2026
2014d66
Merge pull request #1596 from microsoft/dev/waan/2987836
WardenGnaw Jul 16, 2026
92ea952
Merge pull request #1614 from microsoft/dev/waan/podmanErrorMessaging
WardenGnaw Aug 13, 2026
1028edb
LEGO: Pull request from lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_…
csigs Aug 15, 2026
72067f7
LEGO: Pull request from lego/hb_d72c5677-3f00-4225-b18e-0a1e8a8f5f0e_…
csigs Aug 17, 2026
cb9702d
Pin GitHub Actions to full-length commit SHAs (#1619)
danfiedler-msft Aug 24, 2026
292bc80
Bump the github-actions group with 5 updates (#1620)
dependabot[bot] Aug 24, 2026
8ffc66d
Bump NuGet/setup-nuget from 3.1.0 to 4 in the github-actions group (#…
dependabot[bot] Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .config/1espt/PipelineAutobaseliningConfig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.

pipelines:
13876:
retail:
source:
credscan:
lastModifiedDate: 2025-09-04
eslint:
lastModifiedDate: 2025-09-04
psscriptanalyzer:
lastModifiedDate: 2025-09-04
armory:
lastModifiedDate: 2025-09-04
accessibilityinsights:
lastModifiedDate: 2025-09-04
binary:
credscan:
lastModifiedDate: 2025-09-04
binskim:
lastModifiedDate: 2025-09-04
spotbugs:
lastModifiedDate: 2025-09-04
14629:
retail:
source:
eslint:
lastModifiedDate: 2026-06-20
psscriptanalyzer:
lastModifiedDate: 2026-06-20
armory:
lastModifiedDate: 2026-06-20
accessibilityinsights:
lastModifiedDate: 2026-02-02
binary:
binskim:
lastModifiedDate: 2026-06-20
spotbugs:
lastModifiedDate: 2026-06-20
34 changes: 34 additions & 0 deletions .config/guardian/.gdnbaselines
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines"
},
"version": "1.0.0",
"baselines": {
"default": {
"name": "default",
"createdDate": "2026-06-20 00:42:20Z",
"lastUpdatedDate": "2026-06-20 00:43:35Z"
}
},
"results": {
"987d5bfd08c6484fca74a418b398f2b2b831f95a0a8022af4251cf41c7b272a8": {
"signature": "987d5bfd08c6484fca74a418b398f2b2b831f95a0a8022af4251cf41c7b272a8",
"alternativeSignatures": [
"2dfa8bd672245951be7a34cabdc210238f3477d4334fa2a05fa14b06f46c72c0",
"d477464fed3f31fe9eb78a0e76b8a0b42dd755ebbdbd58729442fd058e0d7870",
"fdbb90fe596ed499cfa3055081eba38ce96d1bd08f7e257afe8a87e1a21a2c96"
],
"target": "test/DebuggerTesting/Compilation/XCodeRunCompiler.cs",
"line": 44,
"uriBaseId": "file:///D:/a/_work/1/s/",
"memberOf": [
"default"
],
"tool": "roslynanalyzers",
"ruleId": "CA1310",
"createdDate": "2026-06-20 00:42:20Z",
"expirationDate": "2026-12-07 00:45:46Z",
"justification": "This error is baselined with an expiration date of 180 days from 2026-06-20 00:45:46Z"
}
}
}
25 changes: 25 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Conventions

- Apply the code-formatting style defined in `.editorconfig`.
- This repo builds a debugger. Any `debugger_*` tool call will generally be **debugging the debugger** — `debugger_launch` will likely start another instance of Visual Studio (or a different debugger host process) where the model can drive the code in this repo.

# Documentation to read

⚠️ **CRITICAL**: Before proceeding with any task listed below, you MUST read the linked files as your FIRST action. Do NOT attempt the task until you have read and understood the documentation.

**Mandatory workflow for AI:**
1. ✅ FIRST: read all required documentation files for the task
2. ✅ SECOND: follow the workflow specified there
3. ❌ NEVER: skip to code analysis, edits, or hypothesis formation before reading the docs

| Task | Required documentation files |
| --- | --- |
| Understanding the project layout, how the layers fit together, or where new code belongs | [Architecture-for-AI.md](../docs/Architecture-for-AI.md) (and the project wiki: [Architecture-of-the-MIEngine](https://github.com/microsoft/MIEngine/wiki/Architecture-of-the-MIEngine), [Architecture-of-OpenDebugAD7](https://github.com/microsoft/MIEngine/wiki/Architecture-of-OpenDebugAD7), [Architecture-of-DebugAdapterRunner](https://github.com/microsoft/MIEngine/wiki/Architecture-of-DebugAdapterRunner)) |
| Writing or reviewing C# in this repo | [CodingStandards-CSharp-for-AI.md](../docs/CodingStandards-CSharp-for-AI.md) |
| Adding a new `DebugEngineHost` (host) API, or trying to understand what a `Host*` API actually does | [DebugEngineHost-for-AI.md](../docs/DebugEngineHost-for-AI.md) — `src/DebugEngineHost.Stub` is a **contract assembly only**; the real behavior lives in `src/DebugEngineHost` (VS) and `src/DebugEngineHost.VSCode` (VS Code), and a new API must be added to **all three** projects. |
| Building MIEngine **outside of Visual Studio** (CLI / CI / VS Code scenarios) | [Building-outside-of-VS-for-AI.md](../docs/Building-outside-of-VS-for-AI.md) |
| Running the in-process unit tests (`MICoreUnitTests`, `MIDebugEngineUnitTests`, `JDbgUnitTests`, `SSHDebugTests`) **outside of Visual Studio** | [RunningUnitTests-outside-of-VS-for-AI.md](../docs/RunningUnitTests-outside-of-VS-for-AI.md) |
| Running the end-to-end DAP tests in `test/CppTests` (against real `gdb` / `lldb-mi`) **outside of Visual Studio** | [RunningCppTests-outside-of-VS-for-AI.md](../docs/RunningCppTests-outside-of-VS-for-AI.md) |
| Capturing the MI traffic between MIEngine and `gdb`/`lldb` while reproducing a customer issue | wiki: [Logging](https://github.com/microsoft/MIEngine/wiki/Logging) (use the `Debug.MIDebugLog` Command Window verb in VS, or `src/MICore/SetMIDebugLogging.cmd on` for older flows) |

⚠️ **When working inside Visual Studio**, do **not** follow the "outside of Visual Studio" docs above. VS already provides dedicated commands for these tasks. The `*-outside-of-VS-for-AI.md` docs are for command-line, CI, and VS Code scenarios where the IDE isn't hosting the conversation.
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
groups:
github-actions:
patterns: ["*"]
schedule:
interval: "weekly"
cooldown:
default-days: 7
38 changes: 19 additions & 19 deletions .github/workflows/Build-And-Test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,29 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0

- name: Install .NET Core
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: 8.0.x

- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0

- name: Setup NuGet.exe for use with actions
uses: NuGet/setup-nuget@v2
uses: NuGet/setup-nuget@fd55a6f3b34392fa83fde1454582407d8c714123 # v4.0

- name: Build MIDebugEngine
run: |
${{ github.workspace }}/eng/Scripts/CI-Build.cmd -c $env:Configuration -t vs
${{ github.workspace }}/eng/Scripts/CI-Build.cmd -c $env:Configuration
env:
Configuration: ${{ matrix.configuration }}

- name: Setup VSTest.console.exe
uses: darenm/Setup-VSTest@v1.3
uses: darenm/Setup-VSTest@3a16d909a1f3bbc65b52f8270d475d905e7d3e44 # v1.3

- name: Run VS Extension tests
run: vstest.console.exe ${{ github.workspace }}\bin\${{ matrix.configuration }}\MICoreUnitTests.dll ${{ github.workspace }}\bin\${{ matrix.configuration }}\JDbgUnitTests.dll ${{ github.workspace }}\bin\${{ matrix.configuration }}\SSHDebugTests.dll ${{ github.workspace }}\bin\${{ matrix.configuration }}\MIDebugEngineUnitTests.dll
Expand All @@ -54,31 +54,31 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0

- name: Install .NET Core
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: 8.0.x

- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0

- name: Setup NuGet.exe for use with actions
uses: NuGet/setup-nuget@v2
uses: NuGet/setup-nuget@fd55a6f3b34392fa83fde1454582407d8c714123 # v4.0

- name: Build MIDebugEngine
run: |
${{ github.workspace }}/eng/Scripts/CI-Build.cmd -t vscode
${{ github.workspace }}/eng/Scripts/CI-Build.cmd

- name: Copy Test Configuration
run: |
copy ${{ github.workspace }}\bin\DebugAdapterProtocolTests\Debug\CppTests\TestConfigurations\config_msys_gdb.xml ${{ github.workspace }}\bin\DebugAdapterProtocolTests\Debug\CppTests\config.xml

- name: Setup MSYS2
uses: msys2/setup-msys2@v2
uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2.32.0
with:
msystem: MINGW64
path-type: inherit
Expand All @@ -102,7 +102,7 @@ jobs:
dotnet test $CppTestsPath --logger "trx;LogFileName=$ResultsPath"

- name: 'Upload Test Results'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: win_msys2_x64_results
Expand All @@ -112,12 +112,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0

- name: Install .NET Core
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: 8.0.x

Expand All @@ -142,7 +142,7 @@ jobs:
${{ github.workspace }}/eng/Scripts/CI-Test.sh

- name: 'Upload Test Results'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: linux_x64_results
Expand All @@ -152,12 +152,12 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0

- name: Install .NET Core
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: 8.0.x

Expand All @@ -173,7 +173,7 @@ jobs:
# ${{ github.workspace }}/eng/Scripts/CI-Test.sh

- name: 'Upload Test Results'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: osx_x64_results
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ project.lock.json
src/*/*.nuget.props
src/*/*.nuget.targets
.DS_Store
test/CppTests/config.xml
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"dotnet.defaultSolution": "src/MIDebugEngine-Unix.sln"
}
8 changes: 7 additions & 1 deletion build/Debugger.PIAs.Portable.Packages.settings.targets
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<!-- If you add this file to a project, make sure you add a dependency to MakePIAPortable -->
<!-- Adding a build dependency to MakePIAPortable so that the PIA assemblies are generated
before any project that references them is compiled. This enables building individual
projects (e.g. via 'dotnet build') without relying on solution-level build ordering. -->

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- 'package_versions.settings.targets' must have been imported before importing this file. -->
Expand All @@ -15,4 +17,8 @@
<Reference Include="$(MIDefaultOutputPath)PIA\drop\Microsoft.VisualStudio.Debugger.InteropA.dll" />
<Reference Include="$(MIDefaultOutputPath)PIA\drop\Microsoft.VisualStudio.Interop.dll" />
</ItemGroup>

<ItemGroup Label="PIA Build Dependency">
<ProjectReference Include="$(MIEngineRoot)src\MakePIAPortable\MakePIAPortable.csproj" ReferenceOutputAssembly="false" Private="false" SkipGetTargetFrameworkProperties="true" />
</ItemGroup>
</Project>
2 changes: 2 additions & 0 deletions build/all_projects.settings.targets
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
<ToolsHome>$(MIEngineRoot)\tools</ToolsHome>
<IntermediateOutputPath>$(MIEngineRoot)obj\$(Configuration)\$(MSBuildProjectName)\</IntermediateOutputPath>
<NuGetExePath>$(ToolsHome)\NuGet\NuGet.exe</NuGetExePath>
<!--NOTE: This is the same language version that is the default for .NET 8 projects -->
<LangVersion>12.0</LangVersion>
</PropertyGroup>

<!-- Source Link -->
Expand Down
2 changes: 1 addition & 1 deletion build/version.settings.targets
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!--SxS: These three properties should be changed at the start of a new version, VersionZeroYear should be the year
before the start of the project.-->
<MajorVersion>18</MajorVersion>
<MinorVersion>8</MinorVersion>
<MinorVersion>10</MinorVersion>
<VersionZeroYear>2025</VersionZeroYear>
<!-- Note: for compatibility, we leave the default assembly version of the repo at 14.0.
If we ever decide to change this, make sure that you notify partner teams such as C++ IOT -->
Expand Down
56 changes: 56 additions & 0 deletions docs/Architecture-for-AI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# MIEngine architecture for AI

MIEngine is a Visual Studio **Debug Engine** that drives debuggers speaking the GDB **Machine Interface** ("MI") protocol — primarily GDB and LLDB-MI. The same code powers the `cppdbg` debug adapter for the VS Code C/C++ extension via `OpenDebugAD7`.

## Layered design

The engine is layered. New code almost always belongs in one of these projects; before adding a class, decide which layer owns the concern.

| Layer | Project(s) | Responsibility |
| --- | --- | --- |
| Transport + MI parsing | `src/MICore` | Connections to the debuggee's debugger over local pty, SSH, pipe, serial. Owns the `MICommandFactory` family (`GdbMICommandFactory`, `LldbMICommandFactory`, `ClrdbgMICommandFactory`). All flavor-specific MI quirks live here as factory overrides. |
| AD7 implementation | `src/MIDebugEngine` | Implements the VS Core Debug Interfaces (`IDebugEngine2`, `IDebug*2`). `DebuggedProcess` is the central object owning the `MICore.Debugger`, breakpoint/threads/modules managers, and the event pump. AD7 wrapper classes (`AD7Engine`, `AD7Thread`, `AD7StackFrame`, `AD7BoundBreakpoint`, …) translate VS SDK COM calls into engine operations. |
| DAP shim | `src/OpenDebugAD7` | Hosts MIDebugEngine in-proc and exposes it as a Debug Adapter Protocol server. The entry point for the `cppdbg` adapter consumed by the VS Code C/C++ extension. |
| Host abstraction | `src/DebugEngineHost`, `src/DebugEngineHost.Common`, `src/DebugEngineHost.Stub`, `src/DebugEngineHost.VSCode` | The shim that lets MIDebugEngine avoid calling VS APIs directly. Goes through `HostLogger`, `HostMarshal`, `HostOutputWindow`, etc. The `DebugEngineHost.VSCode` variant is used by OpenDebugAD7; the in-VS build uses the COM-based host (`src/DebugEngineHost`). |
| Launchers | `src/AndroidDebugLauncher`, `src/IOSDebugLauncher`, `src/WindowsDebugLauncher` | Out-of-proc helpers spawned by the engine to start a debug session in a special environment (Android emulator, iOS device, Windows console). They communicate over stdio and implement `IPlatformAppLauncher`. |
| SSH port supplier | `src/SSHDebugPS` | A standalone VS "Port Supplier" for picking processes over SSH or Linux Docker. Independent of the engine flow. |

## Hard rules

- **No raw MI strings outside `MICore.MICommandFactory` / `Debugger.CmdAsync`.** If MIDebugEngine needs a new MI command, add a method on the factory and override per debugger flavor when behavior diverges.
- **MIDebugEngine does not depend on `Microsoft.VisualStudio.*` types directly.** Route everything through `DebugEngineHost`. This is what allows OpenDebugAD7 to host the engine on non-VS platforms.
- **Don't add `MIDebugEngine.sln`-only projects to `MIDebugEngine-Unix.sln`** (and vice versa). The split is intentional — the Unix solution must remain SDK-buildable without `msbuild`, the Windows extension workload, or COM PIAs.
- **AD7 surface goes on the `AD7*` partial class** for that interface. Keep VS-SDK COM concerns out of the core `Debugged*` classes (`DebuggedProcess`, `DebuggedThread`, `DebuggedModule`).

## Inside MICore

`MICore` itself decomposes into five concerns. When adding code there, place it in the right one rather than growing `Debugger` further:

1. **`Debugger`** — central pump that processes text from GDB/LLDB and dispatches it to consumers.
2. **`MICommandFactory`** + flavor overrides (`Gdb`, `Lldb`, `Clrdbg`) — the abstraction for "send command X". *All* MI string construction goes through here.
3. **Result parser** (`ResultValue`, etc.) — parses MI result records into typed objects.
4. **Transports** — local pty, SSH, named-pipe, serial; set up the stdin/stdout connection to the debugger.
5. **Launch options** — XML deserialization driven by `LaunchOptions.xsd` (codegenned by `tools/LaunchOptionsGen` into `LaunchOptions.cs`); also loads custom launchers.

The only enforced layering rule between MICore and MIDebugEngine is that **launchers depend on `MICore` only**. Any type a launcher needs must therefore live in MICore, not in MIDebugEngine.

## Async / threading

MIDebugEngine uses TPL `Task`s but AD7 callbacks must not block the dispatcher thread. The pattern is `Task.Run` for the work + post results back via the engine's `WorkerThread` / `EngineCallback`. Mirror existing call sites rather than inventing new threading; introducing a new pattern almost always causes deadlocks against `DebuggedProcess.WorkerThread`.

## LaunchOptions

The XML payload that `launch.json` (VS Code) or `vsdbg`/the IDE (VS) sends to the engine is described by `src/MICore/LaunchOptions.xsd`. The C# binding classes are **generated** by `tools/LaunchOptionsGen` — regenerate (`LaunchOptionsGen <xsd>`) rather than hand-editing the generated `LaunchOptions.cs`.

## Entry points worth knowing

- VS extension entry: `MIDebugPackage` registers MIDebugEngine and pulls in `MIDebugEngine.dll`.
- VS Code adapter entry: `src/OpenDebugAD7/Program.cs` — main loop reads DAP messages from stdin and dispatches to `AD7DebugSession`.
- Engine creation: `AD7Engine.LaunchSuspended` / `AD7Engine.Attach` — both end at constructing a `DebuggedProcess`.

## Tests at a glance

- Pure managed unit tests live in `MICoreUnitTests`, `MIDebugEngineUnitTests`, `JDbgUnitTests`, `SSHDebugTests`.
- End-to-end DAP tests against a real debugger live in `test/CppTests` and use the `DebugAdapterRunner` framework.

See [RunningUnitTests-outside-of-VS-for-AI.md](RunningUnitTests-outside-of-VS-for-AI.md) and [RunningCppTests-outside-of-VS-for-AI.md](RunningCppTests-outside-of-VS-for-AI.md).
Loading
Loading