Skip to content

TTD API cleanup chores (follow-up from PR #1125 review) #1131

Description

@xusheng6

Follow-up chores from @plafosse's review of #1125 (approved contingent only on the std::pair<bool,…>std::optional fix, which has been done). These are the remaining "holistic / light mechanical refactor" items. They aren't specific to the register-write code — most apply to the surrounding TTD query APIs generally — so tracking them here rather than blocking that PR.

C++

  • std::pair<bool, T>std::optional<T> everywhere. Done for the register-write methods in Add TTD go to previous/next register write (#1123) #1125; the pre-existing TTD memory-access methods (GetTTDNext/PrevMemoryAccess) still return std::pair<bool, TTDMemoryEvent> and should be migrated for consistency.
  • Register-name parameters: const std::string&std::string_view. Applies to the TTD query methods that take a register name (api/debuggerapi.h, controller, adapter).
  • ParseSingleTTDRegisterWriteObject: take expression by value (std::string) and std::move it into wExpression rather than const std::string& + copy (core/adapters/dbgengttdadapter.cpp).
  • Logging: avoid Log* without a logger, and prefer the Log*F variants (faster, more readable, more featureful). The new TTD code uses bare LogInfo/LogError/LogWarn with printf-style args — this pattern is repo-wide in the debugger, so worth a broader sweep.

Python (api/python/debuggercontroller.py)

  • Make the event classes frozen @dataclasses instead of hand-rolled classes with manual __eq__/__hash__/__setattr__ (TTDRegisterWriteEvent, and the sibling TTDMemoryEvent / related event classes).
  • Use a typedef'd register-name type instead of native str. Mirror architecture.py's RegisterName = NewType('RegisterName', str) for register-name parameters.

Review comments: #1125 (review)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DbgEng AdapterBugs/issues related to the DbgEndAdapterTTDissues related to time travel debuggingpython api

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions