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

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

  •  
  •   zhwguest · 297 天前 · 4068 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    但是这样有两个问题:

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

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

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

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

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


    logcat *:V | grep "我的包名"
    vyronlee
        5
    vyronlee  
       297 天前 via iPhone
    1 楼的 pidcat ,好用又美观
    rekulas
        6
    rekulas  
       297 天前
    pidcat win10 测试可用 但感觉日志似乎还是不全
    riverskyfang
        7
    riverskyfang  
       296 天前
    把 uid 打印出来,然后根据 uid 过滤
    behindeye
        8
    behindeye  
       296 天前
    要把 uid 打印,跟进 uid 来过滤
    zhwguest
        9
    zhwguest  
    OP
       296 天前
    @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  
       295 天前 via iPhone
    @zhwguest pidcat 命令后面只需要跟 package ,就算重启 app 变化 pid 也没关系,也能正常获取日志
    zhwguest
        11
    zhwguest  
    OP
       295 天前
    @dullwit 感谢,我试一下
    behindeye
        12
    behindeye  
       295 天前
    @zhwguest
    adb shell pm list packages -U |grep com.android.bluetooth ,这个命令可以过滤出你的应用的 uid ;
    然后 adb logcat --uid 10181 过滤日志
    zhwguest
        13
    zhwguest  
    OP
       295 天前
    @behindeye 感谢,但是我用--uid 提示:

    ```
    logcat: Unknown option '--uid'.
    ```
    riverskyfang
        14
    riverskyfang  
       294 天前   ❤️ 1
    @zhwguest
    adb logcat -v threadtime,uid
    zhwguest
        15
    zhwguest  
    OP
       293 天前
    @riverskyfang 好用,感谢~~~
    SupperMary
        16
    SupperMary  
       293 天前
    打 log 的时候用相同的 tag 打出来,可以 logcat -s your_tag 这样看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   950 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.