Add support for custom debug adapters from C++/Python API #791
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.
This PR implements comprehensive support for creating custom debug adapters from the C++ and Python API side, allowing developers to extend the Binary Ninja Debugger with new protocols, targets, and specialized debugging scenarios.
Architecture
The implementation uses a three-layer bridge architecture:
CustomDebugAdapter
andCustomDebugAdapterType
classes that forward calls to user-provided callbacksKey Features
CustomDebugAdapter
andCustomDebugAdapterType
with automatic type conversionsUsage Examples
C++ Implementation:
Python Implementation:
Implementation Details
CustomDebugAdapter
class forwards all virtual method calls to user-provided FFI callbacksdocs/custom_debug_adapters.md
Testing
All implementation tests pass (6/6):
This enables extending the Binary Ninja Debugger with custom protocols (e.g., proprietary debug interfaces), specialized targets (e.g., embedded systems, virtual machines), and unique debugging scenarios (e.g., trace analysis, simulation environments).
Fixes #370.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.