代码之家  ›  专栏  ›  技术社区  ›  Luca Matteis

我们可以从UI的最终状态开始反向调试UI吗?

  •  0
  • Luca Matteis  · 技术社区  · 5 年前

    在web开发的背景下,用户多次提供其“无效状态”的屏幕截图。

    我使用React,我想知道我们是否可以用相反的方式进行调试:从当前状态开始:

    • 用户向我们提供了无效UI状态的屏幕截图。
    • 通过devtools,我们可以更改组件的道具以匹配;找到特定的排列(让我们想象所有组件都是无状态的)。
    • 将排列输入到“程序”中,该程序向我们展示代码中导致道具以这种方式改变的东西。

    从技术角度来看,我想知道这是否可能:我们能从程序的特定状态倒退到时间上吗?

    这应该是可能的,因为状态是从我们代码的特定执行路径导出的;那么,反过来也是可能的吗?我感兴趣的原因是出于调试目的,但我也觉得这将是一次有趣的探索性练习。

    是否有任何资源或工具可供我查看,以确定这是否可行?

    编辑 :为了更清楚地说明这一点,我正在寻找一种方法,给系统一个“状态”作为输入,并及时返回一个可能的“路径跟踪”列表,以便我的代码能够执行到这样的状态:

    showHowWeCanArriveTo({
      name: 'Bob',
      showPopup: true,
      colors: ['blue', 'green']
    });
    
    // Returns:
    [
      [setName('Bob'), setShowPopup(true), addColor('blue'), addColor('green')]
    ]
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Pablo Marcano    5 年前

    我用过 Logrocket 在做出完全相同的反应之前。如果你使用redux,他们提供了一个中间件,可以记录用户状态及其历史,并且可以从他们的网络访问。

        2
  •  0
  •   D.W.    5 年前

    您可能正在寻找 time travel debugging , reverse debugging ,或 replay debugging 。基本上,它们的工作原理是记录程序执行时的行为,并保留足够的日志,以便您可以倒退。

    或者,原则上可以使用程序分析的技术(程序切片、反向程序执行等)来尝试反向执行程序,并找到可能导致该状态的所有执行路径。然而,可能有很多这样的路径(你走得越远,可能就越多),从头开始实现这样的东西在技术上并不容易。