llvm-project/debuginfo-tests/dexter/Commands.md

5.8 KiB

Dexter commands


DexExpectProgramState

DexExpectProgramState(state [,**times])

Args:
    state (dict): { 'frames': [
                    {
                      # StackFrame #
                      'function': name (str),
                      'is_inlined': bool,
                      'location': {
                        # SourceLocation #
                        'lineno': int,
                        'path': str,
                        'column': int,
                      },
                      'watches': {
                        expr (str): value (str),
                        expr (str): {
                          'value': str,
                          'type_name': str,
                          'could_evaluate': bool,
                          'is_optimized_away': bool,
                          'is_irretrievable': bool,
		    }
                      },
                    }
                  ]}

Keyword args:
    times (int): Minimum number of times this state pattern is expected to
         be seen. Defaults to 1. Can be 0.

Description

Expect to see a given program state a certain number of times.

For every debugger step the reported state is compared with the expected state. To consider the states a match:

  • The SourceLocation must match in both states. Omitted fields in the SourceLocation dictionary are ignored; they always match.
  • Each expr in watches in the expected state can either be a dictionary with the fields shown above, or a string representing its value. In either case, the actual value of expr in the debugger must match.
  • The function name and inline status are not considered.

Heuristic

[TODO]


DexExpectStepKind

DexExpectStepKind(kind, times)

Args:
  kind (str): Expected step kind.
  times (int): Expected number of encounters.

Description

Expect to see a particular step kind a number of times while stepping through the program.

kind must be one of:

FUNC: The first step into a function which is defined in the test directory.
FUNC_EXTERNAL: A step over a function which is not defined in the test directory.
FUNC_UNKNOWN: The first step over a function an unknown definition location.
VERTICAL_FORWARD: A step onto a line after the previous step line in this frame.
VERTICAL_BACKWARD: A step onto a line before the previous step line in this frame.
HORIZONTAL_FORWARD: A step forward on the same line as the previous step in this frame.
HORIZONTAL_BACKWARD: A step backward on the same line as the previous step in this frame.
SAME: A step onto the same line and column as the previous step in this frame.

Heuristic

[TODO]


DexExpectStepOrder

DexExpectStepOrder(*order)

Arg list:
  order (int): One or more indices.

Description

Expect the line every DexExpectStepOrder is found on to be stepped on in order. Each instance must have a set of unique ascending indices.

Heuristic

[TODO]


DexExpectWatchType

DexExpectWatchType(expr, *types [,**from_line=1][,**to_line=Max]
                    [,**on_line][,**require_in_order=True])

Args:
    expr (str): expression to evaluate.

Arg list:
    types (str): At least one expected type. NOTE: string type.

Keyword args:
    from_line (int): Evaluate the expression from this line. Defaults to 1.
    to_line (int): Evaluate the expression to this line. Defaults to end of
        source.
    on_line (int): Only evaluate the expression on this line. If provided,
        this overrides from_line and to_line.
    require_in_order (bool): If False the values can appear in any order.

Description

Expect the expression expr to evaluate be evaluated and have each evaluation's type checked against the list of types

Heuristic

[TODO]


DexExpectWatchValue

DexExpectWatchValue(expr, *values [,**from_line=1][,**to_line=Max]
                    [,**on_line][,**require_in_order=True])

Args:
    expr (str): expression to evaluate.

Arg list:
    values (str): At least one expected value. NOTE: string type.

Keyword args:
    from_line (int): Evaluate the expression from this line. Defaults to 1.
    to_line (int): Evaluate the expression to this line. Defaults to end of
        source.
    on_line (int): Only evaluate the expression on this line. If provided,
        this overrides from_line and to_line.
    require_in_order (bool): If False the values can appear in any order.

Description

Expect the expression expr to evaluate to the list of values sequentially.

Heuristic

[TODO]


DexUnreachable

DexUnreachable()

Description

Expect the source line this is found on will never be stepped on to.

Heuristic

[TODO]


DexLabel

DexLabel(name)

Args:
    name (str): A unique name for this line.

Description

Name the line this command is found on. Line names can be referenced by other commands expecting line number arguments. For example, DexExpectWatchValues(..., on_line='my_line_name').

Heuristic

This command does not contribute to the heuristic score.


DexWatch

DexWatch(*expressions)

Arg list:
    expressions (str): `expression` to evaluate on this line.

Description

[Deprecated] Evaluate each given expression when the debugger steps onto the line this command is found on.

Heuristic

[Deprecated]