【问题标题】:How can I debug javascript between client and server seamlessly如何在客户端和服务器之间无缝调试 javascript
【发布时间】:2014-02-14 20:30:04
【问题描述】:

关于javascript调试的问题:

我们有一个使用 JavaScript 和 HTML 制作的移动应用程序。此应用在 Web 容器内的移动平台(BlackBerry 10、Android、iOS)上运行。

此应用程序的另一部分正在远程服务器上运行。这部分也是通过在 Node.js 上运行的 JavaScript 实现的。

假设在客户端(移动端的 JS)和服务器端(Node.js 上的 JS)之间建立了一些通信,例如使用休息。

我想知道的问题是是否可以同时无缝调试双方。 例如。如果我在移动应用客户端有一个断点,如果可能的话,我如何能够一直调试到服务器端的 JS。

任何建议都会有所帮助。

【问题讨论】:

  • 您能否在 Chrome 浏览器中运行您的应用程序?如果是这样,您可以使用 Chrome 的远程调试功能来设置断点并逐步执行代码。效果很好。
  • 是的,该应用程序将位于基于 chromium 的 Web 容器中。远程调试是否允许我单步执行在 nodejs 上运行的服务器代码?
  • 抱歉,我对 node.js 不是很熟悉,但我非常怀疑您是否可以使用相同的工具调试服务器代码。你可以看看this post。此外,您甚至可以从 Android 4.4 (KitKat) 开始调试 WebView。见here
  • 所以我想到目前为止,没有已知的解决方案可用于节点的无缝客户端服务器调试?

标签: javascript android html node.js chromium


【解决方案1】:

您可以在服务器上使用节点检查器,然后您将拥有两个实例,但具有相同的调试器工具集。

如果您正在单步调试代码客户端,并且想要调试“进入”服务器,则必须在从客户端进行 GET/POST 之前在服务器调试器中放置一个断点。

提示:设置三台(至少两台)显示器。

【讨论】:

    【解决方案2】:

    使用节点检查器是进行调试的好策略,但用日志记录补充调试器也很好。

    调试将让您逐步完成事件链并检查该链中变量的值和函数的输出,但在生产中,它不会让您深入了解导致用户遇到错误的步骤或生产条件(即为什么我有一个空变量?为什么我的响应消息是错误的?)如果您使用调试而不记录日志,您将尝试复制生产中导致错误的条件,这是一种低效(通常是徒劳)的方式做事。

    我想说实现您想要做的事情(解决同时发生的客户端和服务器事件的问题)的最佳方法是在您的服务器和客户端上实现一个开源日志库,如 Log4j 并配置将日志发送到 Loggly 之类的日志聚合器的附加程序,它为您提供了在同一位置分析客户端和服务器日志的工具(而不是手动从两个设备中提取日志文件)。

    完成此操作后,您就可以将应用分发给测试人员,并且可以查看围绕某些问题的操作、应用日志和硬件/网络状况。有了这些数据,您将更好地了解导致某些错误的原因,并可以使用这些信息更有效地使用节点检查器来调试它们。

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 1970-01-01
      • 2016-03-18
      • 2016-08-19
      • 2011-02-10
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      相关资源
      最近更新 更多