在 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 控制台?