V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhwguest
V2EX  ›  Android

仅仅使用命令行如何根据包名来过滤 logcat

  •  
  •   zhwguest · 2023-07-05 15:06:31 +08:00 · 8114 次点击
    这是一个创建于 499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在是根据 pidof 命令获取对应包名为进程名的进程 pid ,然后用 logcat --pid 来过滤。

    但是这样有两个问题:

    1 ) app 重启后,pid 发生改变,我必须重新运行 logcat ;

    1. 有的 app 有多个 process ,pidof 只能获取同包名的进程,仅一个进程能打印出来。

    请教大神直接根据包名过滤的方法。

    16 条回复    2023-07-09 09:49:06 +08:00
    dullwit
        1
    dullwit  
       2023-07-05 15:22:51 +08:00
    Masoud2023
        2
    Masoud2023  
       2023-07-05 16:12:22 +08:00
    没做过安卓开发,安卓那个 busybox 有 grep 和 xargs 之类的工具吗?

    或许可以组合一个命令出来?
    winzkh
        3
    winzkh  
       2023-07-05 16:43:48 +08:00   ❤️ 1
    @Masoud2023 #2 安卓没有 busybox ,用的是 toybox
    LLaMA2
        4
    LLaMA2  
       2023-07-05 17:47:44 +08:00
    但你输入 logcat 实际上等于 logcat *:D
    如果你要所有的日志那就 logcat *:V
    这里的*是你在 anroid 中 log 制定的 tag ,*通配所有,如过还要根据 packgename 做 filter
    那就


    logcat *:V | grep "我的包名"
    vyronlee
        5
    vyronlee  
       2023-07-05 19:04:39 +08:00 via iPhone
    1 楼的 pidcat ,好用又美观
    rekulas
        6
    rekulas  
       2023-07-05 21:04:30 +08:00
    pidcat win10 测试可用 但感觉日志似乎还是不全
    riverskyfang
        7
    riverskyfang  
       2023-07-06 12:52:06 +08:00
    把 uid 打印出来,然后根据 uid 过滤
    behindeye
        8
    behindeye  
       2023-07-06 13:58:54 +08:00
    要把 uid 打印,跟进 uid 来过滤
    zhwguest
        9
    zhwguest  
    OP
       2023-07-06 22:36:26 +08:00
    @dullwit 这个没看出来比 pidof 命令对我的需求有多大帮助啊,这难道不也是先得到 pid ,然后过滤么。先拿到 Pid 再用 pid 过滤就会有 pid 变更或者不完整的问题啊。

    @Masoud2023 我现在就是用的一个组合命令 adb logcat --pid=$(adb shell pidof com.xxx.yyy),我的问题不是如何获取 Pid ,而是使用 Pid 有天生的缺陷,它不持久和唯一;

    @ye4tar 我用 logcat *:V 并没有看到输出 package name ,我的 adb 版本是 Version 34.0.1-9680074

    @riverskyfang @behindeye 谢谢,uid 相对于 pid 来说,的确是持久化和唯一化的,是非常好的参数。但是您说的打印 uid 是指可以通过 adb 的参数来打印还是说要通过修改程序?我还不知道如何打印出来
    dullwit
        10
    dullwit  
       2023-07-07 07:59:11 +08:00 via iPhone
    @zhwguest pidcat 命令后面只需要跟 package ,就算重启 app 变化 pid 也没关系,也能正常获取日志
    zhwguest
        11
    zhwguest  
    OP
       2023-07-07 10:06:18 +08:00
    @dullwit 感谢,我试一下
    behindeye
        12
    behindeye  
       2023-07-07 11:45:54 +08:00
    @zhwguest
    adb shell pm list packages -U |grep com.android.bluetooth ,这个命令可以过滤出你的应用的 uid ;
    然后 adb logcat --uid 10181 过滤日志
    zhwguest
        13
    zhwguest  
    OP
       2023-07-07 14:27:28 +08:00
    @behindeye 感谢,但是我用--uid 提示:

    ```
    logcat: Unknown option '--uid'.
    ```
    riverskyfang
        14
    riverskyfang  
       2023-07-08 17:26:12 +08:00   ❤️ 1
    @zhwguest
    adb logcat -v threadtime,uid
    zhwguest
        15
    zhwguest  
    OP
       2023-07-09 09:46:32 +08:00
    @riverskyfang 好用,感谢~~~
    SupperMary
        16
    SupperMary  
       2023-07-09 09:49:06 +08:00
    打 log 的时候用相同的 tag 打出来,可以 logcat -s your_tag 这样看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.