xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexWatch.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
11364750dSJames Henderson# DExTer : Debugging Experience Tester
21364750dSJames Henderson# ~~~~~~   ~         ~~         ~   ~~
31364750dSJames Henderson#
41364750dSJames Henderson# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
51364750dSJames Henderson# See https://llvm.org/LICENSE.txt for license information.
61364750dSJames Henderson# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
71364750dSJames Henderson"""Command to instruct the debugger to inspect the value of some set of
81364750dSJames Hendersonexpressions on the current source line.
91364750dSJames Henderson"""
101364750dSJames Henderson
111364750dSJames Hendersonfrom dex.command.CommandBase import CommandBase
121364750dSJames Henderson
131364750dSJames Henderson
141364750dSJames Hendersonclass DexWatch(CommandBase):
151364750dSJames Henderson    """[Deprecated] Evaluate each given `expression` when the debugger steps onto the
161364750dSJames Henderson    line this command is found on
171364750dSJames Henderson
181364750dSJames Henderson    DexWatch(*expressions)
191364750dSJames Henderson
201364750dSJames Henderson    See Commands.md for more info.
211364750dSJames Henderson    """
221364750dSJames Henderson
231364750dSJames Henderson    def __init__(self, *args):
241364750dSJames Henderson        if not args:
25*f98ee40fSTobias Hieta            raise TypeError("expected some arguments")
261364750dSJames Henderson
271364750dSJames Henderson        for arg in args:
281364750dSJames Henderson            if not isinstance(arg, str):
29*f98ee40fSTobias Hieta                raise TypeError("invalid argument type")
301364750dSJames Henderson
311364750dSJames Henderson        self._args = args
321364750dSJames Henderson        super(DexWatch, self).__init__()
331364750dSJames Henderson
341364750dSJames Henderson    @staticmethod
351364750dSJames Henderson    def get_name():
361364750dSJames Henderson        return __class__.__name__
371364750dSJames Henderson
381364750dSJames Henderson    def eval(self, debugger):
391364750dSJames Henderson        return {arg: debugger.evaluate_expression(arg) for arg in self._args}
40