在 Android 上调试 javascript 时如何打断点(并查看错误行号)?

Posted

技术标签:

【中文标题】在 Android 上调试 javascript 时如何打断点(并查看错误行号)?【英文标题】:How can I hit breakpoints (and see error line numbers) when debugging javascript on Android? 【发布时间】:2017-02-09 22:43:15 【问题描述】:

我正在尝试按照 these 说明调试 android javascript

我知道How can I debug javascript on Android?,但我不清楚我如何(或是否)可以打断点 - 无论是在 Android 设备上使用 Chrome,还是在 Android 浏览器上。

我可以看到并“检查”设备正常:

但是没有命中断点,我也看不到控制台错误的行号:

在这两个问题之间,我并没有从调试经验中得到太多有用的信息!我尝试在 android 浏览器中转到“about:debug”,并确实看到了调试选项。

我将补充一点,我正在调试的 js 在同一 Android 设备上的最新 Chrome 中运行良好。

【问题讨论】:

你确定没有人命中吗?您在上面标记的行位于 IIFE 的开头——不确定这是否会调试。另外,您是否尝试过在代码中删除 debugger; 语句以查看工具是否会在那里中断? @anied 该行在 Chrome 中进行调试。 debugger; 是个好主意 - 我会尝试。 签出***.com/questions/11788081/… 另一种检查方法是将警报放入 js 文件并在警报中获取所需的值作为输出 【参考方案1】:

我现在再次尝试了同样的事情,这次没有遇到问题。不幸的是,我无法确定问题到底出在哪里,因为由于我的开发机器死机,我正在运行新的 Windows 10 安装,并且可能是不同版本的 Android SDK 和 ADB。手机和安卓浏览器没有变化。

无论如何,我现在可以按照我的预期设置和命中断点:

我还得到了更好的错误描述和行号:

FWIW,唯一需要解决的问题是将一些 'let' 声明更改为 'var'。

【讨论】:

【参考方案2】:

假设您在开发中使用模块捆绑器(例如 Webpack)(基于屏幕截图中的端口 8080),您尝试调试的代码很可能是通过 eval 执行的。在这种情况下,当您可以在 devtools 中看到它时,它已经运行了。

您可以在代码中使用debugger 语句,也可以在生产模式下运行——其中正在执行一个真正的脚本文件。在这两种情况下,您都应该先附加远程调试器,然后才能导航到您的页面(或刷新它)。

【讨论】:

只是 8080 '因为这是npmjs.com/package/http-server的默认端口【参考方案3】:

首先,似乎有一堆语法错误可能会阻止 mustache.js 执行 - 看看你能不能先解决这些问题。

我会尝试在下一行(第 9 行)设置断点,以查看该 IIFE 中是否有任何东西正在运行。

【讨论】:

这是一些 JS 在同一设备上的最新 Chrome 中运行良好 - 这些语法错误仅出现在 Android 浏览器上。我已经尝试在很多地方设置断点......如果它们能够被击中,我肯定会击中一个。那应该只是说明性的。

以上是关于在 Android 上调试 javascript 时如何打断点(并查看错误行号)?的主要内容,如果未能解决你的问题,请参考以下文章

使用phonegap在android模拟器中调试javascript

如何在android的webview中调试javascript

如何在 Android(和 iOS)上查看 JavaScript 控制台?

Android 工作室 - 调试 Javascript

如何使用 WebView 启用 WebKit 的 Android 应用程序的远程调试/检查器?

使用LogCat对浏览器进行android USB调试