Merge 'main' into 'release-cpptools'#1564
Merged
Merged
Conversation
Update Package Version and ZeroYear
bypass -data-read-memory-bytes when using lldb together with coredump
When attaching to a process via SSH, the debugger hung at 'Initializing debugger' because readlink was sent through GDB's MI interface which has no timeout. ExecuteSyncCommand on the SSH port did not exist when this code was written (PR #432), but was added two weeks later (PR #446). Changes: - DebuggedProcess.cs: Run readlink/lsof directly via the SSH port's ExecuteSyncCommand with a 30s timeout instead of GDB's MI interface. The -file-exec-and-symbols command still goes through GDB. - AD7Port.cs: Skip VS wait dialog when ExecuteSyncCommand is called from a background thread (debugger worker thread hits an assert otherwise). - ResourceStrings: Add localized strings for progress and error messages (timeout, non-zero exit code).
* Add VS feedback tool integration for MIEngine diagnostic logs
Attach MIEngine diagnostic logs to VS "Report a Problem" feedback reports
via IFeedbackDiagnosticFileProvider (MEF export).
- FeedbackLogBuffer: always-on 256KB circular buffer with sequence-tracked
FlushNewEntries() to prevent duplicate entries across consumers
- VSFeedbackLogger: FileSystemWatcher monitors feedback semaphore file;
when VS starts "Record Steps", opens a StreamWriter and dumps buffered
entries plus live-streams new ones
- FeedbackDiagnosticFileProvider: MEF export discovered by VS feedback
tool; flushes new buffer entries to temp file (MIEngine-{pid}.log) and
returns the path
- IL reference assembly for IFeedbackDiagnosticFileProvider interface
(package is on Azure-Public but we cant have multifeeds)
* Add support for HitCount and HitCondition This PR adds in showing the Hit count for a breakpoint and for setting a HitCondition. Enables m_supportsHitConditionalBreakpoints, OpenDebugAD7 now properly builds a AD7BreakpointRequest with a hitCondition, AD7BoundBreakpoint now properly tracks hits and will prevent a break event if theres a condition set. Added CppTests and updated DebuggerTesting for associated commands. Addresses: #472 * Use -break-after * Handle updating hitCondition when with hitCount > 0 * Address PR issues * Re-add ShouldBreak()
* Strip Windows dll!-qualified module prefixes before GDB/LLDB evaluation Expressions in NatVis files often reference Windows-specific module prefixes such as Qt6Cored.dll! to disambiguate types. These prefixes are meaningless to GDB and LLDB and cause evaluation failure on Linux/macOS. ReplaceNamesInExpression now strips them before any expression is sent to the debugger. * Natvis: implement <Intrinsic> support for GDB/LLDB NatVis <Intrinsic> elements define named inline expressions that can be called by name in any subsequent expression within the same <Type> block. MIEngine previously ignored them silently; this change makes them work. * Natvis: address review comments on intrinsic support PR - Rename ParameterType -> IntrinsicParameterType in natvis.xsd and NatvisXsdTypes.cs to match the Visual Studio natvis.xsd - Make Intrinsics property get-only (assigned only in constructor) - Rename s_dllQualifiedPrefix -> s_moduleQualifiedPrefix; extend regex to match .exe! in addition to .dll!, add RegexOptions.IgnoreCase, and use non-capturing groups - Broaden s_intrinsicCallPattern identifier from [A-Za-z_]\w* to \w+ to support non-Latin identifiers * Natvis: fix ParameterType rename in unit tests NatvisIntrinsicTest.cs was not updated when ParameterType was renamed to IntrinsicParameterType in the review-comments commit, causing build failures on Windows CI.
Enable disabled DAR Linux tests (CppTests) Re-enable 5 tests on GitHub Linux runners: - CoreDumpBasic, CoreDumpBasicMismatchedSourceAndSymbols, CoreDumpVerifyActions - ExecutionAsyncBreak - RunModeBreakpoints CI changes: - Set kernel.core_pattern=core so dumps land in CWD (debuggee output dir) - Set core_uses_pid=0 (test expects file named 'core', no PID suffix) - Disable apport service which intercepts core dumps on Ubuntu - Run tests in subshell with ulimit -c unlimited (scoped, resets on exit) Test fixes (latent bugs in previously-disabled tests): - CoreDumpVerifyActions: Assert.Contains args were inverted. xUnit signature is (expectedSubstring, actualString) but the test had them backwards. - ExecutionAsyncBreak: Test was sending pause before the inferior was running. Use a function breakpoint to confirm the loop is executing, then continue and async break. Also fix shouldExit access via 'this' (member variable). Relates to: #1170 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The condition guard was using IsNullOrWhiteSpace instead of !IsNullOrWhiteSpace, which meant LinkedListItems with a Condition attribute were never filtered — items were always shown regardless of the condition value. Added an integration test (TestLinkedListItemsCondition) that creates two ConditionalLinkedList objects — one with isActive=true and one with isActive=false — and verifies that the natvis LinkedListItems Condition attribute is respected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add configurable debuginfod settings to prevent GDB hangs ## Why is this change being made? Fixes microsoft/vscode-cpptools#14458 MIEngine commit f169b02 added `set debuginfod enabled on` unconditionally in GetInitializeCommands(). On systems where DEBUGINFOD_URLS points to an unreachable server (e.g. debuginfod.ubuntu.com which is currently down), subsequent GDB commands block for 90+ seconds waiting for the network request to time out, causing GDB to appear hung on launch. ## Summarize what changed - Added a `debuginfod` launch option (JSON: `{ enabled: bool, timeout: int }` XML: `EnableDebuginfod`/`DebuginfodTimeout` attributes) defaulting to enabled with a 30-second timeout. - When enabled (timeout > 0): sets DEBUGINFOD_TIMEOUT and DEBUGINFOD_MAXTIME environment variables on the GDB process to cap network requests. - When enabled (timeout = 0): no timeout override is applied; GDB/libdebuginfod defaults are used. - When disabled: clears DEBUGINFOD_URLS on the GDB process so debuginfod connections are never attempted, even if the system has the env var set. - `set debuginfod enabled on` is now conditional on the EnableDebuginfod setting. - Added XSD schema validation (minInclusive=0) and JSON schema (minimum: 0). - Negative timeout values are clamped to the default (30) at runtime. ## How was the change tested? - [x] Changes reviewed by Copilot CLI (using /review) - [x] All 36 MICoreUnitTests pass - [x] Integration tests (DebuginfodTests) pass in WSL with GDB 12.1: - DebuginfodDisabledDoesNotHang: steps into std::regex with unreachable server, verifies launch completes in < 10s - DebuginfodTimeoutPreventsHang: steps into std::regex with 5s timeout, verifies launch completes in < 30s - [x] All existing CppTests pass (Sample, Execution, Breakpoint, Environment) - [x] Verified via TCP listener that debuginfod URLs are actually queried during step-into-library operations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.