我的记录

本文提供了一系列Android系统的调试技巧,包括查看不同类型的日志信息、输入事件、进程状态等,还介绍了如何利用ADB命令进行Activity和服务的启动及广播发送,并对Linux进程状态进行了详细解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)在Android系统中,printk输出的日志信息保存在/proc/kmsg中,要查看/proc/kmsg的内容   ($ dmseg)
(2)使用 adb shell getevent 查看输入事件:/dev/input/event*
(3)adb shell am

adb shell am broadcast 后面的参数有:

[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]

查看所有权限的指令adb shell pm list permissions -g -d
 adb shell pm [grant|revoke] <permission-name> ...

启动Activity : adb shell am start 包名/类名
启动Service : adb shell am startservice -n  包名/类名
修改SettingsProvider : adb shell settings put secure default_input_method com.android.inputmethod.pinyin/.PinyinIME
发送广播 : adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
说明: test_*为key,后面为value,--es为String类型, --ei int类型,--ez boolean类型,--ef float类型

(4) Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:

radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)
 'main', 'system', 'radio','events', 'crash' or 'all'
-b 选项的用法:

[adb] logcat [-b ]
例如查看radio缓冲区:
adb logcat -b radio

 

(5)[linux进程的几个状态]

1. Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态)

2. Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal

3. Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟

4. Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根本没有时间片运行代码

5. Linux进程状态:Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程。不可被kill, 即不响应任务信号, 无法用SIGKILL杀死

 

(6)android:DDMS查看Threads
ID:   虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。
Tid:linux的线程ID号
Stauts:线程状态,比较多,有下面的一些
             running:  正在执行程序代码
             sleeping:执行了Thread.sleep()
             monitor:等待接受一个监听锁。
             wait::Object.wait(),等待被其他线程唤醒
             native:正在执行native代码,
             vmwait:等待虚拟机,(这个不是很懂,高手指教,这个状态在什么情况下发生)
             zombie:线程在垂死的进程
             init:线程在初始化(我们不可能看到)
             starting:线程正在启动(我们不可能看到)
utime:执行用户代码的累计时间
stime:执行系统代码的累计时间
name:线程的名字

 

(7)Android.mk文件输出信息

LOCAL_SRC_FILES := $(call all-java-files-under, src)

Makefile & Android.mk文件中如何输出打印信息:$(warning xxxxx)或者$(error xxxxx)
输出变量方式为:$(warning  $(XXX))

 

(8)linux操作
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`  //多文件替换内容

sed -i "s/SIM Telcel/TELCEL/g" `grep "SIM Telcel" -rl yourdir`  //多文件替换内容

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值