mu_feature_debugger

Project Mu based UEFI SW/FW debugger

OTHER License

Stars
10
Committers
4

Bot releases are visible (Hide)

mu_feature_debugger - v0.2.0

Published by github-actions[bot] 25 days ago

What's Changed

Adds a flag to the debugger PCD and HOB to allow polling for break from the debugger. This may be necessary for scenarios where the debugger and console share a serial port so that they do not contend over input while the debugger is not broken-in.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

Testing Instructions: N/A


🚀 Features & ✨ Enhancements

Changes the default behavior from unknown exceptions from a cpu dead loop to still break into the debugger with a "generic fault" information

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

Testing Instructions: N/A


Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.5...v0.2.0

mu_feature_debugger - v0.1.5

Published by github-actions[bot] about 1 month ago

What's Changed

Update the CI branches to release/202405

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

CI

Integration Instructions

N/A


When accessing memory, treat read protected memory the same as non-resident VAs. There shouldn't be a need to read or write to these addresses and if so in the future they should be sup[ported through physical read/write instructions.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested in SBSA

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.4...v0.1.5

mu_feature_debugger - v0.1.4 Latest Release

Published by github-actions[bot] 4 months ago

What's Changed

Implement up to 4 watchpoints, or data breakpoints, which are represented by the GDB breakpoints types 2-4. These can be set in windbg by using the ba command, e.g. ba w8 0x10000001. These can be set in GDB by using the watch for writes, rwatch for reads, or awatch for either.

#33

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested on Q35 and SBSA on QEMU.

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.3...v0.1.4

mu_feature_debugger - v0.1.3

Published by github-actions[bot] 5 months ago

What's Changed

On AARCH64 processors single step was not working on real hardware because either 1. the OS lock register was set, or 2. the DEBUG exceptions were masked by the DAIF configuration. This makes sure neither are true in debugger configuration.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Manually tested on an AARCH64 machine.

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Introduce a modified copy of efi_gdb.py and efi_debugging.py from BaseTools to be targetted for use with the DebuggerFeaturePkg.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

N/A

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Windbg will attempt to read page 0 for some hueristics and will look on read that fail, the work-around to check for a NULL address won't catch all issues, so just check for all addresses in the first page.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested locally on device

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>
  1. Remove workaround where windbgx wasn't able to step when broken on debug breakpoints for #10. This is fixed in windbgx version 1.2405.3001.0
  2. Minor improvements to the info monitor command.
  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested locally with Q35

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.2...v0.1.3

mu_feature_debugger - v0.1.2

Published by github-actions[bot] 6 months ago

What's Changed

  1. Fix issue with setting registers. This requires a windbgx fix as well.
  2. Add !reboot command for better reboot experience
  3. Fixes setting !modulebreak after an existing modulebreak
  4. fix full load of module on iterative runs of !findall
  5. improvements to !advlog
  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested with Q35 & SBSA

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

📖 Documentation Updates

Improvements to the core for:

  1. Add windbg workaround PCD to allow disabling for native GDB systems.
  2. Add break reason for debugger initiated breakpoints
  3. Add workaround for #10
  4. Fix .reboot not working

Improvements to UEFI Extension:

  1. Cleaned up help function
  2. Added crude implementation for adv logger parser
  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Local tests on QEMU

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.1...v0.1.2

mu_feature_debugger - v0.1.1

Published by github-actions[bot] 6 months ago

What's Changed

Windbg tries to read the Windows shared data page as some sort of heuristic when connecting. Because this page does not exist in UEFI mappings, Windows may loop on this read so long as it fails. This work around will just return 0 when reads occur to this well-known VA so cause the heuristic to fail fast.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Tested on Q35 virtual platform.

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Fix potential index overflow in GDB parsing.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

N/A

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Fixes a common local name to STATIC to avoid compile errors.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Local compile and test

Integration Instructions

N/A


Adds write permissions to release contents for the UefiExt build pipeline for it to upload the release artifact.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Manually tested in test release

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

📖 Documentation Updates

Clarify how to launch windbgx using the provided config file.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

N/A

Integration Instructions

N/A

  </blockquote>
  <hr>
</details>

Full Changelog: https://github.com/microsoft/mu_feature_debugger/compare/v0.1.0...v0.1.1

mu_feature_debugger - v0.1.0

Published by cfernald 7 months ago

Initial release of the Mu Feature Debugger repo.

This initial release is still in-development, and bugs are almost certainly present. Please file issues for problem encountered, or feature requests.

This release includes initial implmentations of the following.

  1. FeatureDebuggerPkg implementation for a DXE & MM software debugger using a custom GDB stub.
  2. UefiExt Windbg extension for parsing the UEFI environment, whterh using the SW debugger or a hardware debugger backend.
  3. Tools and documentation for debugging UEFI platforms.