我现在是根据 pidof 命令获取对应包名为进程名的进程 pid ,然后用 logcat --pid 来过滤。
但是这样有两个问题:
1 ) app 重启后,pid 发生改变,我必须重新运行 logcat ;
请教大神直接根据包名过滤的方法。
1
dullwit 2023-07-05 15:22:51 +08:00
|
2
Masoud2023 2023-07-05 16:12:22 +08:00
没做过安卓开发,安卓那个 busybox 有 grep 和 xargs 之类的工具吗?
或许可以组合一个命令出来? |
3
winzkh 2023-07-05 16:43:48 +08:00 1
@Masoud2023 #2 安卓没有 busybox ,用的是 toybox
|
4
LLaMA2 2023-07-05 17:47:44 +08:00
但你输入 logcat 实际上等于 logcat *:D
如果你要所有的日志那就 logcat *:V 这里的*是你在 anroid 中 log 制定的 tag ,*通配所有,如过还要根据 packgename 做 filter 那就 logcat *:V | grep "我的包名" |
5
vyronlee 2023-07-05 19:04:39 +08:00 via iPhone
1 楼的 pidcat ,好用又美观
|
6
rekulas 2023-07-05 21:04:30 +08:00
pidcat win10 测试可用 但感觉日志似乎还是不全
|
7
riverskyfang 2023-07-06 12:52:06 +08:00
把 uid 打印出来,然后根据 uid 过滤
|
8
behindeye 2023-07-06 13:58:54 +08:00
要把 uid 打印,跟进 uid 来过滤
|
9
zhwguest OP @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 的参数来打印还是说要通过修改程序?我还不知道如何打印出来 |
10
dullwit 2023-07-07 07:59:11 +08:00 via iPhone
@zhwguest pidcat 命令后面只需要跟 package ,就算重启 app 变化 pid 也没关系,也能正常获取日志
|
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 过滤日志 |
13
zhwguest OP |
14
riverskyfang 2023-07-08 17:26:12 +08:00 1
@zhwguest
adb logcat -v threadtime,uid |
15
zhwguest OP @riverskyfang 好用,感谢~~~
|
16
SupperMary 2023-07-09 09:49:06 +08:00
打 log 的时候用相同的 tag 打出来,可以 logcat -s your_tag 这样看
|