debugger

package
v0.18.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2026 License: MIT Imports: 48 Imported by: 0

README

/tools/debugger

cd /

[!NOTE] asyncmachine-go is a batteries-included graph control flow library (AOP, actor model, state-machine).

To read about am-dbg, go to /tools/cmd/am-dbg. This package is about the implementation, not the end-user application.

/tools/debugger is a cview TUI app with a single state-machine consisting of:

  • input events (7 states)
  • external state (25 states)
  • actions (18 states)

This state machine features a decent amount of relations within a large number of states and 5 state groups. It's also a good example to see how easily an AM-based program can be controller with a script in /internal/cmd/am-dbg-video.

See machine schema and relations
// States map defines relations and properties of states.
var States = am.Schema{

    // ///// Input events

    ClientMsg:       {Multi: true},
    ConnectEvent:    {Multi: true},
    DisconnectEvent: {Multi: true},

    // user scrolling tx / steps
    UserFwd: {
        Add:    S{Fwd},
        Remove: GroupPlaying,
    },
    UserBack: {
        Add:    S{Back},
        Remove: GroupPlaying,
    },
    UserFwdStep: {
        Add:     S{FwdStep},
        Require: S{ClientSelected},
        Remove:  SAdd(GroupPlaying, S{LogUserScrolled}),
    },
    UserBackStep: {
        Add:     S{BackStep},
        Require: S{ClientSelected},
        Remove:  SAdd(GroupPlaying, S{LogUserScrolled}),
    },

    // ///// Read-only states (e.g. UI)

    // focus group

    TreeFocused:          {Remove: GroupFocused},
    LogFocused:           {Remove: GroupFocused},
    ClientListFocused:    {Remove: GroupFocused},
    TimelineTxsFocused:   {Remove: GroupFocused},
    TimelineStepsFocused: {Remove: GroupFocused},
    MatrixFocused:        {Remove: GroupFocused},
    DialogFocused:        {Remove: GroupFocused},
    Toolbar1Focused:      {Remove: GroupFocused},
    Toolbar2Focused:      {Remove: GroupFocused},
    LogReaderFocused: {
        Require: S{LogReaderVisible},
        Remove:  GroupFocused,
    },
    AddressFocused: {Remove: GroupFocused},

    TimelineHidden:      {Require: S{TimelineStepsHidden}},
    TimelineStepsHidden: {},
    NarrowLayout: {
        Require: S{Ready},
        Remove:  S{ClientListVisible},
    },
    ClientListVisible: {
        Require: S{Ready},
        Auto:    true,
    },
    StateNameSelected:     {Require: S{ClientSelected}},
    TimelineStepsScrolled: {Require: S{ClientSelected}},
    HelpDialog:            {Remove: GroupDialog},
    ExportDialog: {
        Require: S{ClientSelected},
        Remove:  GroupDialog,
    },
    LogUserScrolled: {
        Remove: S{Playing, TailMode},
        Require: S{LogFocused},
    },
    Ready: {Require: S{Start}},
    FilterAutoTx:      {},
    FilterCanceledTx:  {},
    FilterEmptyTx:     {},
    FilterSummaries:   {},
    FilterHealthcheck: {},

    // ///// Actions

    Start: {Add: S{FilterSummaries, FilterHealthcheck, FilterEmptyTx}},
    Healthcheck: {
        Multi:   true,
        Require: S{Start},
    },
    GcMsgs: {Remove: S{SelectingClient, SwitchedClientTx, ScrollToTx,
        ScrollToMutTx}},
    TreeLogView: {
        Auto:    true,
        Require: S{Start},
        Remove:  SAdd(GroupViews, S{TreeMatrixView, MatrixView, MatrixRain}),
    },
    MatrixView:     {Remove: GroupViews},
    TreeMatrixView: {Remove: GroupViews},
    TailMode: {
        Require: S{ClientSelected},
        Remove:  SAdd(GroupPlaying, S{LogUserScrolled}),
    },
    Playing: {
        Require: S{ClientSelected},
        Remove:  SAdd(GroupPlaying, S{LogUserScrolled}),
    },
    Paused: {
        Auto:    true,
        Require: S{ClientSelected},
        Remove:  GroupPlaying,
    },
    ToggleTool: {},
    SwitchingClientTx: {
        Require: S{Ready},
        Remove:  GroupSwitchedClientTx,
    },
    SwitchedClientTx: {
        Require: S{Ready},
        Remove:  GroupSwitchedClientTx,
    },
    ScrollToMutTx: {Require: S{ClientSelected}},
    MatrixRain: {},
    LogReaderVisible: {
        Auto:    true,
        Require: S{TreeLogView, LogReaderEnabled},
    },
    LogReaderEnabled: {},
    UpdateLogReader:  {Require: S{LogReaderEnabled}},

    // tx / steps back / fwd

    Fwd: {
        Require: S{ClientSelected},
    },
    Back: {
        Require: S{ClientSelected},
    },
    FwdStep: {
        Require: S{ClientSelected},
    },
    BackStep: {
        Require: S{ClientSelected},
    },

    ScrollToTx: {
        Require: S{ClientSelected},
        Remove:  S{TailMode, Playing, TimelineStepsScrolled},
    },
    ScrollToStep: {
        Require: S{ClientSelected},
        Remove:  S{TailMode, Playing},
    },

    // client selection

    SelectingClient: {
        Require: S{Start},
        Remove:  S{ClientSelected},
    },
    ClientSelected: {
        Require: S{Start},
        Remove:  S{SelectingClient},
    },
    RemoveClient: {Require: S{ClientSelected}},

    SetCursor: {
        Multi:   true,
        Require: S{Ready},
    },
    GraphsScheduled: {
        Multi:   true,
        Require: S{Ready},
    },
    GraphsRendering: {
        Require: S{Ready},
    },

    InitClient: {Multi: true},
}

You can read the source at /tools/debugger and states at /tools/debugger/states.

Integration Tests

/tools/debugger/test contains integration tests which use a local worker instance, which is then controlled with Add1Block and Add1AsyncBlock from /pkg/helpers to perform test scenarios. None of the tests ever calls time.Sleep, as everything is synchronized via asyncmachine's clock. The local test worker doesn't have UI and uses tcell.SimulationScreen instead.

Remote Worker

/tools/debugger/test/remote contains integration tests which use a remote worker to execute the same suite. The worker has to be started separately using task am-dbg-worker, and because it's a regular TUI app, this one has a UI which can be seen and controlled by the user (on top of the test suite itself).

Debugging Workers

Because both local and remote workers are state machines, they can export telemetry to a debugger instance. In aRPC Tutorial one can find a video demo presenting a debugging session of a remote worker. To activate remote debugging, please set AM_TEST_DEBUG=1 and run task am-dbg-dbg prior to tests. Remote tests are run via task test-debugger-remote.

Video Walkthrough

Schema

State schema from /tools/debugger/states/ss_dbg.go.

schema

monorepo

Go back to the monorepo root to continue reading.

Documentation

Overview

Package debugger provides a TUI debugger with multi-client support. Runnable command can be found in tools/cmd/am-dbg.

Index

Constants

View Source
const (
	DialogExport = "export"
	DialogHelp   = "help"
)

Variables

This section is empty.

Functions

func AllocMem added in v0.9.0

func AllocMem() uint64

func NewSessionScreen added in v0.18.0

func NewSessionScreen(s ssh.Session) (tcell.Screen, error)

func RpcGetter added in v0.7.0

func RpcGetter(d *Debugger) func(string) any

TODO migrate to Provide-Delivered

Types

type Client

type Client struct {
	*server.Client

	CursorTx1           int
	ReaderCollapsed     bool
	CursorStep1         int
	SelectedState       string
	SelectedReaderEntry *types.LogReaderEntryPtr
	// extracted log entries per tx ID
	// TODO GC when all entries are closedAt and the first client's tx is later
	//  than the latest closedAt; whole tx needs to be disposed at the same time
	LogReader map[string][]*types.LogReaderEntry
	// contains filtered or unexported fields
}

func (*Client) AddReaderEntry added in v0.16.1

func (c *Client) AddReaderEntry(txId string, entry *types.LogReaderEntry) int

func (*Client) GetReaderEntry added in v0.16.1

func (c *Client) GetReaderEntry(txId string, idx int) *types.LogReaderEntry

type Debugger

type Debugger struct {
	*am.ExceptionHandler
	Mach *am.Machine

	Clients map[string]*Client
	// TODO go-arg and inherit from RWMutex
	Opts       Opts
	LayoutRoot *cview.Panels
	// selected client
	// TODO atomic, drop eval
	C   *Client
	App *cview.Application
	// printer for numbers TODO global
	P *message.Printer
	// TODO GC removed machines
	History       []*types.MachAddress
	HistoryCursor int
	// contains filtered or unexported fields
}

func New added in v0.6.4

func New(ctx context.Context, opts Opts) (*Debugger, error)

New creates a new debugger instance and optionally import a data file.

func (*Debugger) AddressFocusedEnd added in v0.9.0

func (d *Debugger) AddressFocusedEnd(_ *am.Event)

func (*Debugger) AddressFocusedState added in v0.9.0

func (d *Debugger) AddressFocusedState(e *am.Event)

func (*Debugger) AfterFocusEnter added in v0.11.0

func (d *Debugger) AfterFocusEnter(e *am.Event) bool

func (*Debugger) AfterFocusState added in v0.11.0

func (d *Debugger) AfterFocusState(e *am.Event)

func (*Debugger) AnyEnter added in v0.15.0

func (d *Debugger) AnyEnter(e *am.Event) bool

AnyEnter prevents most of mutations during a UI redraw (and vice versa) forceful race solving

func (*Debugger) AnyState added in v0.8.1

func (d *Debugger) AnyState(e *am.Event)

AnyState is a global final handler

func (*Debugger) BackEnter

func (d *Debugger) BackEnter(e *am.Event) bool

func (*Debugger) BackState

func (d *Debugger) BackState(e *am.Event)

func (*Debugger) BackStepEnter

func (d *Debugger) BackStepEnter(_ *am.Event) bool

func (*Debugger) BackStepState

func (d *Debugger) BackStepState(e *am.Event)

func (*Debugger) BuildingLogEnter added in v0.15.0

func (d *Debugger) BuildingLogEnter(e *am.Event) bool

func (*Debugger) BuildingLogState added in v0.15.0

func (d *Debugger) BuildingLogState(e *am.Event)

func (*Debugger) Client added in v0.7.0

func (d *Debugger) Client() *Client

Client returns the current Client. Thread safe via Eval().

func (*Debugger) ClientListVisibleEnd added in v0.15.0

func (d *Debugger) ClientListVisibleEnd(e *am.Event)

func (*Debugger) ClientListVisibleState added in v0.10.3

func (d *Debugger) ClientListVisibleState(e *am.Event)

func (*Debugger) ClientMsgEnter

func (d *Debugger) ClientMsgEnter(e *am.Event) bool

func (*Debugger) ClientMsgState

func (d *Debugger) ClientMsgState(e *am.Event)

func (*Debugger) ClientSelectedEnd

func (d *Debugger) ClientSelectedEnd(e *am.Event)

func (*Debugger) ClientSelectedState

func (d *Debugger) ClientSelectedState(e *am.Event)

func (*Debugger) ConnectEventEnter

func (d *Debugger) ConnectEventEnter(e *am.Event) bool

func (*Debugger) ConnectEventState

func (d *Debugger) ConnectEventState(e *am.Event)

func (*Debugger) CurrentTx

func (d *Debugger) CurrentTx() *dbg.DbgMsgTx

CurrentTx returns the current transition. Thread safe via Eval().

func (*Debugger) DiagramsReadyState added in v0.13.0

func (d *Debugger) DiagramsReadyState(e *am.Event)

func (*Debugger) DiagramsRenderingEnter added in v0.13.0

func (d *Debugger) DiagramsRenderingEnter(e *am.Event) bool

func (*Debugger) DiagramsRenderingState added in v0.13.0

func (d *Debugger) DiagramsRenderingState(e *am.Event)

func (*Debugger) DiagramsScheduledEnter added in v0.13.0

func (d *Debugger) DiagramsScheduledEnter(e *am.Event) bool

func (*Debugger) DiagramsScheduledState added in v0.13.0

func (d *Debugger) DiagramsScheduledState(e *am.Event)

func (*Debugger) DisconnectEventEnter

func (d *Debugger) DisconnectEventEnter(e *am.Event) bool

func (*Debugger) DisconnectEventState

func (d *Debugger) DisconnectEventState(e *am.Event)

func (*Debugger) Dispose added in v0.6.4

func (d *Debugger) Dispose()

func (*Debugger) ExceptionEnter added in v0.15.0

func (d *Debugger) ExceptionEnter(e *am.Event) bool

func (*Debugger) ExceptionState added in v0.8.0

func (d *Debugger) ExceptionState(e *am.Event)

ExceptionState creates a log file with the error and stack trace, after calling the super exception handler.

func (*Debugger) ExportDialogEnd

func (d *Debugger) ExportDialogEnd(e *am.Event)

func (*Debugger) ExportDialogState

func (d *Debugger) ExportDialogState(_ *am.Event)

func (*Debugger) FilterCanceledTxEnd added in v0.15.0

func (d *Debugger) FilterCanceledTxEnd(e *am.Event)

func (*Debugger) FilterQueuedTxEnd added in v0.15.0

func (d *Debugger) FilterQueuedTxEnd(e *am.Event)

func (*Debugger) FwdEnter

func (d *Debugger) FwdEnter(e *am.Event) bool

func (*Debugger) FwdState

func (d *Debugger) FwdState(e *am.Event)

func (*Debugger) FwdStepEnter

func (d *Debugger) FwdStepEnter(_ *am.Event) bool

func (*Debugger) FwdStepState

func (d *Debugger) FwdStepState(_ *am.Event)

func (*Debugger) GcMsgsEnter added in v0.9.0

func (d *Debugger) GcMsgsEnter(e *am.Event) bool

func (*Debugger) GcMsgsState added in v0.8.0

func (d *Debugger) GcMsgsState(e *am.Event)

func (*Debugger) HeartbeatState added in v0.15.0

func (d *Debugger) HeartbeatState(e *am.Event)

func (*Debugger) HelpDialogEnd

func (d *Debugger) HelpDialogEnd(e *am.Event)

func (*Debugger) HelpDialogState

func (d *Debugger) HelpDialogState(e *am.Event)

func (*Debugger) LogBuiltState added in v0.15.0

func (d *Debugger) LogBuiltState(e *am.Event)

func (*Debugger) LogReaderVisibleEnd added in v0.8.0

func (d *Debugger) LogReaderVisibleEnd(e *am.Event)

func (*Debugger) LogReaderVisibleState added in v0.8.0

func (d *Debugger) LogReaderVisibleState(e *am.Event)

func (*Debugger) LogUpdatedState added in v0.15.0

func (d *Debugger) LogUpdatedState(e *am.Event)

func (*Debugger) MatrixRainEnter added in v0.15.0

func (d *Debugger) MatrixRainEnter(e *am.Event) bool

func (*Debugger) MatrixRainSelectedState added in v0.15.0

func (d *Debugger) MatrixRainSelectedState(e *am.Event)

func (*Debugger) MatrixRainState added in v0.7.0

func (d *Debugger) MatrixRainState(_ *am.Event)

func (*Debugger) MatrixViewEnd

func (d *Debugger) MatrixViewEnd(_ *am.Event)

func (*Debugger) MatrixViewState

func (d *Debugger) MatrixViewState(_ *am.Event)

func (*Debugger) NarrowLayoutEnd added in v0.10.3

func (d *Debugger) NarrowLayoutEnd(e *am.Event)

func (*Debugger) NarrowLayoutExit added in v0.10.3

func (d *Debugger) NarrowLayoutExit(e *am.Event) bool

func (*Debugger) NarrowLayoutState added in v0.10.3

func (d *Debugger) NarrowLayoutState(e *am.Event)

func (*Debugger) NextTx

func (d *Debugger) NextTx() *dbg.DbgMsgTx

NextTx returns the next transition. Thread safe via Eval().

func (*Debugger) PausedState

func (d *Debugger) PausedState(_ *am.Event)

func (*Debugger) PlayingEnd

func (d *Debugger) PlayingEnd(_ *am.Event)

func (*Debugger) PlayingState

func (d *Debugger) PlayingState(_ *am.Event)

func (*Debugger) PrevTx

func (d *Debugger) PrevTx() *dbg.DbgMsgTx

PrevTx returns the previous transition. Thread safe via Eval().

func (*Debugger) ReadyEnd added in v0.8.0

func (d *Debugger) ReadyEnd(_ *am.Event)

func (*Debugger) ReadyState added in v0.8.0

func (d *Debugger) ReadyState(e *am.Event)

func (*Debugger) RedrawState added in v0.15.0

func (d *Debugger) RedrawState(e *am.Event)

func (*Debugger) RemoveClientEnter

func (d *Debugger) RemoveClientEnter(e *am.Event) bool

func (*Debugger) RemoveClientState

func (d *Debugger) RemoveClientState(e *am.Event)

func (*Debugger) ResizedState added in v0.15.0

func (d *Debugger) ResizedState(e *am.Event)

func (*Debugger) ScrollToMutTxState added in v0.7.0

func (d *Debugger) ScrollToMutTxState(e *am.Event)

ScrollToMutTxState scrolls to a transition which mutated the passed state, If fwd is true, it scrolls forward, otherwise backwards.

func (*Debugger) ScrollToStepEnter added in v0.9.0

func (d *Debugger) ScrollToStepEnter(e *am.Event) bool

func (*Debugger) ScrollToStepState added in v0.9.0

func (d *Debugger) ScrollToStepState(e *am.Event)

ScrollToStepState scrolls to a specific transition (cursor position 1-based).

func (*Debugger) ScrollToTxEnter

func (d *Debugger) ScrollToTxEnter(e *am.Event) bool

func (*Debugger) ScrollToTxState

func (d *Debugger) ScrollToTxState(e *am.Event)

ScrollToTxState scrolls to a specific transition (cursor position 1-based).

func (*Debugger) SelectingClientEnter

func (d *Debugger) SelectingClientEnter(e *am.Event) bool

func (*Debugger) SelectingClientState

func (d *Debugger) SelectingClientState(e *am.Event)

func (*Debugger) SetCursorEnter added in v0.15.0

func (d *Debugger) SetCursorEnter(e *am.Event) bool

func (*Debugger) SetCursorState added in v0.10.3

func (d *Debugger) SetCursorState(e *am.Event)

TODO remove?

func (*Debugger) SetFilterLogLevel added in v0.6.4

func (d *Debugger) SetFilterLogLevel(lvl am.LogLevel)

TODO state: SetOptsState

func (*Debugger) SetGroupEnter added in v0.15.0

func (d *Debugger) SetGroupEnter(e *am.Event) bool

func (*Debugger) SetGroupState added in v0.15.0

func (d *Debugger) SetGroupState(e *am.Event)

func (*Debugger) SshServerEnd added in v0.18.0

func (d *Debugger) SshServerEnd(e *am.Event)

func (*Debugger) SshServerEnter added in v0.18.0

func (d *Debugger) SshServerEnter(e *am.Event) bool

func (*Debugger) SshServerState added in v0.18.0

func (d *Debugger) SshServerState(e *am.Event)

func (*Debugger) Start added in v0.6.4

func (d *Debugger) Start(
	clientID string, txNum int, uiView string, group string,
)

TODO config param to New(

func (*Debugger) StartEnd

func (d *Debugger) StartEnd(_ *am.Event)

func (*Debugger) StartState

func (d *Debugger) StartState(e *am.Event)

func (*Debugger) StateNameSelectedEnd

func (d *Debugger) StateNameSelectedEnd(_ *am.Event)

func (*Debugger) StateNameSelectedEnter added in v0.11.0

func (d *Debugger) StateNameSelectedEnter(e *am.Event) bool

func (*Debugger) StateNameSelectedState

func (d *Debugger) StateNameSelectedState(e *am.Event)

func (*Debugger) SwitchedClientTxState added in v0.7.0

func (d *Debugger) SwitchedClientTxState(_ *am.Event)

func (*Debugger) SwitchingClientTxState added in v0.7.0

func (d *Debugger) SwitchingClientTxState(e *am.Event)

func (*Debugger) TailModeEnd added in v0.8.0

func (d *Debugger) TailModeEnd(_ *am.Event)

func (*Debugger) TailModeState

func (d *Debugger) TailModeState(e *am.Event)

func (*Debugger) TimelineStepsFocusedEnd

func (d *Debugger) TimelineStepsFocusedEnd(_ *am.Event)

func (*Debugger) TimelineStepsFocusedState

func (d *Debugger) TimelineStepsFocusedState(_ *am.Event)

func (*Debugger) TimelineStepsHiddenEnd added in v0.10.3

func (d *Debugger) TimelineStepsHiddenEnd(e *am.Event)

func (*Debugger) TimelineStepsHiddenState added in v0.10.3

func (d *Debugger) TimelineStepsHiddenState(e *am.Event)

func (*Debugger) TimelineStepsScrolledEnd added in v0.9.0

func (d *Debugger) TimelineStepsScrolledEnd(_ *am.Event)

func (*Debugger) TimelineStepsScrolledState added in v0.9.0

func (d *Debugger) TimelineStepsScrolledState(_ *am.Event)

func (*Debugger) TimelineTxHiddenEnd added in v0.15.0

func (d *Debugger) TimelineTxHiddenEnd(e *am.Event)

func (*Debugger) TimelineTxHiddenState added in v0.15.0

func (d *Debugger) TimelineTxHiddenState(e *am.Event)

func (*Debugger) ToggleToolEnter added in v0.10.1

func (d *Debugger) ToggleToolEnter(e *am.Event) bool

func (*Debugger) ToggleToolState added in v0.10.1

func (d *Debugger) ToggleToolState(e *am.Event)

func (*Debugger) ToolRainState added in v0.11.0

func (d *Debugger) ToolRainState(e *am.Event)

func (*Debugger) ToolToggledState added in v0.15.0

func (d *Debugger) ToolToggledState(e *am.Event)

func (*Debugger) Toolbar1FocusedEnd added in v0.10.1

func (d *Debugger) Toolbar1FocusedEnd(_ *am.Event)

func (*Debugger) Toolbar1FocusedState added in v0.10.1

func (d *Debugger) Toolbar1FocusedState(e *am.Event)

func (*Debugger) Toolbar2FocusedEnd added in v0.10.1

func (d *Debugger) Toolbar2FocusedEnd(_ *am.Event)

func (*Debugger) Toolbar2FocusedState added in v0.10.1

func (d *Debugger) Toolbar2FocusedState(e *am.Event)

func (*Debugger) Toolbar3FocusedEnd added in v0.15.0

func (d *Debugger) Toolbar3FocusedEnd(_ *am.Event)

func (*Debugger) Toolbar3FocusedState added in v0.15.0

func (d *Debugger) Toolbar3FocusedState(e *am.Event)

func (*Debugger) TreeGroupsFocusedEnd added in v0.15.0

func (d *Debugger) TreeGroupsFocusedEnd(_ *am.Event)

func (*Debugger) TreeGroupsFocusedState added in v0.15.0

func (d *Debugger) TreeGroupsFocusedState(e *am.Event)

func (*Debugger) TreeMatrixViewEnd

func (d *Debugger) TreeMatrixViewEnd(_ *am.Event)

func (*Debugger) TreeMatrixViewState

func (d *Debugger) TreeMatrixViewState(_ *am.Event)

func (*Debugger) UpdateFocusState added in v0.11.0

func (d *Debugger) UpdateFocusState(e *am.Event)

func (*Debugger) UpdateLogScheduledState added in v0.15.0

func (d *Debugger) UpdateLogScheduledState(e *am.Event)

func (*Debugger) UpdatingLogState added in v0.15.0

func (d *Debugger) UpdatingLogState(e *am.Event)

UpdatingLogState decorates the rendered log, and rebuilds when needed.

func (*Debugger) UserBackState

func (d *Debugger) UserBackState(_ *am.Event)

func (*Debugger) UserBackStepState

func (d *Debugger) UserBackStepState(_ *am.Event)

func (*Debugger) UserFwdState

func (d *Debugger) UserFwdState(_ *am.Event)

func (*Debugger) UserFwdStepState

func (d *Debugger) UserFwdStepState(_ *am.Event)

func (*Debugger) WebReqState added in v0.15.0

func (d *Debugger) WebReqState(e *am.Event)

func (*Debugger) WebSocketDiagState added in v0.18.0

func (d *Debugger) WebSocketDiagState(e *am.Event)

type Focusable

type Focusable struct {
	cview.Primitive
	*cview.Box
}

type Opts added in v0.6.4

type Opts struct {
	MachUrl         string
	SelectConnected bool
	CleanOnConnect  bool
	EnableMouse     bool
	ShowReader      bool
	// MachAddress to listen on
	AddrRpc  string
	AddrHttp string
	AddrSsh  string
	// Log level of the debugger's machine
	DbgLogLevel am.LogLevel
	// Go race detector is enabled
	DbgRace   bool
	DbgLogger *log.Logger
	// Filters for the transitions and logging
	Filters *OptsFilters
	// Timelines is the number of timelines to show (0-2).
	Timelines int
	// File path to import (brotli)
	ImportData string
	// Dump client list into a txt file.
	OutputClients bool
	// Root dir for output files
	OutputDir string
	// OutputDiagrams is the details level of the current machine's diagram (0-3).
	// 0 - off, 3 - most detailed
	OutputDiagrams int
	// Screen overload for tests & ssh
	Screen tcell.Screen
	// Debugger's ID
	Id string
	// version of this instance
	Version         string
	MaxMemMb        int
	Log2Ttl         time.Duration
	ViewNarrow      bool
	ViewRain        bool
	TailMode        bool
	OutputTx        bool
	EnableClipboard bool
	UiSsh           bool
	UiWeb           bool
	Print           func(txt string, args ...any)
	OutputLog       bool
}

type OptsFilters added in v0.6.4

type OptsFilters struct {
	SkipCanceledTx     bool
	SkipAutoTx         bool
	SkipAutoCanceledTx bool
	SkipEmptyTx        bool
	SkipHealthTx       bool
	SkipQueuedTx       bool
	SkipOutGroup       bool
	SkipChecks         bool
	LogLevel           am.LogLevel
}

func (*OptsFilters) Equal added in v0.15.0

func (f *OptsFilters) Equal(filters *OptsFilters) bool

type RelCol

type RelCol struct {
	// contains filtered or unexported fields
}

type S added in v0.10.3

type S = am.S

type ToolName added in v0.10.1

type ToolName string
const (
	ToolLogTimestamps ToolName = "hide-timestamps"
	ToolFilterTraces  ToolName = "hide-traces"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL