| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #pragma once |
| |
| #include "garnet/bin/zxdb/symbols/location.h" |
| #include "garnet/public/lib/fxl/macros.h" |
| |
| namespace zxdb { |
| |
| class Process; |
| |
| // One breakpoint can expand to multiple locations due to inlining and template |
| // instantiations. This class represents one physical address of a breakpoint. |
| class BreakpointLocation { |
| public: |
| BreakpointLocation(); |
| virtual ~BreakpointLocation(); |
| |
| // Returns the process this breakpoint location is associated with. One |
| // Breakpoint object can apply to multiple processes, but a location applies |
| // to only one. |
| virtual Process* GetProcess() const = 0; |
| |
| // Returns the symbolized location of the breakpoint. |
| virtual Location GetLocation() const = 0; |
| |
| // Locations can be enabled or disabled independently. If the breakpoint is |
| // disabled, all breakpoint locations will be disabled, but the enable state |
| // of each will be retained (to facilitate toggling on and off a set of |
| // locations). |
| // |
| // This means the actual enabled state is this combined with the Breakpoint |
| // enabled flag. |
| virtual bool IsEnabled() const = 0; |
| virtual void SetEnabled(bool enabled) = 0; |
| |
| private: |
| FXL_DISALLOW_COPY_AND_ASSIGN(BreakpointLocation); |
| }; |
| |
| } // namespace zxdb |