【问题标题】:Debugging a WebView (Ionic) app on Android via logcat通过 logcat 在 Android 上调试 WebView (Ionic) 应用程序
【发布时间】:2015-05-14 21:05:09
【问题描述】:

关于这个主题有几个问题,但似乎没有一个能解决我遇到的特定问题。

我正在使用 Cordova/Ionic 开发一个应用程序,并且使用 adb logcat CordovaLog:D *:S 打印我使用 console.log() 输出的调试信息在一些更新之前工作得很好。现在我似乎无法弄清楚如何正确过滤 logcat 的输出,所以我只能从我的应用程序中获取调试信息。

日志记录本身有效。如果我没有设置过滤器并将输出重定向到一个文件,我可以在所有其他调试消息中看到我的调试信息,它看起来像这样:

I/Web Console: Event triggered: device.ready:1

登录到屏幕也可以,但速度约为每秒 100 行。我至少尝试了以下方法来过滤输出:

adb logcat -s "Web Console"
adb logcat "Web Console":V
adb logcat "Web Console":*
adb logcat -s Web
adb logcat Web:V
adb logcat "myApp":V
adb logcat myApp:V
adb logcat -s myApp

...可能还有我已经忘记的其他人。它们要么完全不打印,要么完全从系统服务中打印所有内容。

我在 Windows 上,所以我不能grep,我正在调试的设备运行的是 Android 4.2.2,所以我不能使用 GapDebug,而且似乎也无法访问通过 Chrome 中的chrome://inspect 记录设备的日志。

我真的非常想了解过滤 logcat 的输出是如何工作的。我不愿意将所有内容都记录到一个文件中,然后再进行转换。

【问题讨论】:

  • adb logcat -s "Web Console":*... 我建议不要在标签名称中使用空格
  • @AlexP。不,还是纳达。该标签由 Cordova 定义,我不知道如何更改它。它曾经是 CordovaLog,就像我说的那样,一切都很顺利。文档中不存在有关如何更改标签名称的信息,或者我的 Google Fu 让我失望了。
  • adb shell "logcat -s 'Web Console':*"
  • 嗯,总会有adb shell "logcat | grep 'Web Console'"
  • @AlexP。是的!就是那个!请做出回答,以便我接受!

标签: android cordova adb ionic-framework logcat


【解决方案1】:

logcat 似乎无法正确解析带有空格的标签名称。所以我建议在设备上使用grep

adb shell "logcat | grep 'Web Console'"

【讨论】:

  • 缓解了很多头痛
  • 我只输入adb logcat | grep app=mi
  • 在我的情况下,“Web 控制台”过滤不起作用,但“铬”起作用:adb shell "logcat | grep 'chromium'"
【解决方案2】:

或者在 linux 或基于 unix 的 os/git bash 上运行 adb 时:

adb logcat | grep 'Web Console'

【讨论】:

    【解决方案3】:

    2019 年什么对我有用:

    adb -d logcat chromium:I *:S
    

    -d 在我的情况下表示物理设备。如果一切都失败了,只需将adb logcat 的结果转储到一个文本文件中并搜索“CONSOLE”,这将为您提供 logcat 过滤器的提供程序。似乎这会随着时间而变化,并且取决于您的特定开发环境。

    【讨论】:

    • 这是唯一对我有用的东西!谢谢
    • 还有 2020 年
    【解决方案4】:

    虽然您可以在 Linux/Unix 下使用 grep,但在 Windows 下您可能会选择 findstr

    adb logcat | findstr /C:"Web Console"
    

    如果你更喜欢在 Windows 下使用grep,你可以从 http://gnuwin32.sourceforge.net/packages/grep.htm.

    【讨论】:

    • 接受的答案在所有 3 种受支持的操作系统中都是一样的。无需仅 Windows 的解决方案
    • 你是绝对正确的(grep 适用于所有主要操作系统) - 我发布了这个答案 a)针对不太熟悉 GNU 工具的用户 b)考虑到用户所说的“我在 Windows 上,所以我不能 grep”和 c) 提供指向 grep 的链接(再次针对主要在 Windows 下工作并且可能甚至不知道 grep 的用户)
    • 您错过了在接受的答案grep 在设备本身上运行的点。因此,grep 在主机 PC 系统上是否可用并不重要
    • 我确实做到了 - 非常好点 - 如果您在物理设备上运行应用程序,您的回答也可以提高日志记录的性能,因为运行 adb 的主机不必过滤整个日志(离开它到设备进行过滤)
    猜你喜欢
    • 1970-01-01
    • 2014-10-30
    • 2015-07-31
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多