假如有一个文件abc.gz,大小为83456k,我想用dd命令实现如下备份 结果:首先将备份分成三个部分,第一部分为备份文件abc.gz的前10000k,第二部分为中间的70000k,最后备份后面的3456k.
dd if=abc.gz.bak1 of=abc.gz
dd if=abc.gz.bak2 of=abc.gz bs=1k seek=10000
dd if=abc.gz.bak3 of=abc.gz bs=1k seek=80000
这时查看一下恢复的文件将和原来的文件一模一样,说明备份成功了
busybox dd if=/dev/zero of=/dev/block/mmcblk0p21 bs=1024 count=51200
busybox hexdump /dev/block/mmcblk0p21
busybox dd if=/data/communiq.bin of=/dev/block/mmcblk0p21 bs=1024 seek=1024
busybox dd if=/data/communiq.bin of=/dev/block/mmcblk0p21 bs=1024 seek=1408
busybox dd if=/data/communiq.cfg of=/dev/block/mmcblk0p21 bs=1024 seek=2048
busybox dd if=/data/communiq.cfg of=/dev/block/mmcblk0p21 bs=1024 seek=2176
busybox dd if=/data/C04D0139.bin of=/dev/block/mmcblk0p21 bs=1024 seek=3072
busybox dd if=/data/C04D0139.bin of=/dev/block/mmcblk0p21 bs=1024 seek=3136
busybox dd if=/data/C04D0139.bin of=/dev/block/mmcblk0p21 bs=1024 seek=4096
busybox dd if=/data/C04D0139.bin of=/dev/block/mmcblk0p21 bs=1024 seek=4160
sync
dumpsys (Android - 系统服务信息)
1|root@root:/proc/msp # dumpsys -l
Currently running services:
CASEventManagerService
ChinaDrmManagerService
DockObserver
EventManagerServer
HiDisplay
HiPQ
HiSysManager
HinetshareBService
Micphone
RTSoundEffects
SurfaceFlinger
accessibility
account
activity
alarm
android.security.keystore
appops
appwidget
assetatlas
audio
backup
battery
batteryproperties
batterystats
bluetooth_manager
clipboard
commontime_management
connectivity
consumer_ir
content
country_detector
cpuinfo
dbinfo
device_policy
devicestoragemonitor
diskstats
display
dreams
drm.drmManager
dropbox
entropy
ethernet
fingerprint
gfxinfo
hardware
hiaoservice
hikaraokeservice
hipppoe
imms
input
input_method
jobscheduler
launcherapps
location
lock_settings
media.audio_flinger
media.audio_policy
media.camera
media.player
media.sound_trigger_hw
media.tvosaudiosetting
media.tvosvideosetting
media_projection
media_router
media_session
meminfo
mount
my.DA.binder
my.OAM.binder
netpolicy
netstats
network_management
network_score
ngb_eventmanager
ngb_inputevent
notification
package
permission
power
print
procstats
restrictions
rttmanager
samplingprofiler
scheduling_policy
search
security.paymentManager
sensorservice
serial
service.infrared
servicediscovery
statusbar
stp.androidxmanager
telephony.registry
textservices
trust
tvos.interact
tvos.multiscreen
tvos.payment
tvos.smarthomeiot
uimode
updatelock
usagestats
usb
user
vibrator
wallpaper
webviewupdate
wifi
wifip2p
wifiscanner
window
procmem/dumpsys meminfo (Android - 单个进程/系统内存分配信息查看)
eg:dumpsys |grep BroadcastRecord
root@root:/proc/msp # procmem 1576
Vss Rss Pss Uss ShCl ShDi PrCl PrDi Name
------- ------- ------- ------- ------- ------- ------- -------
900K 888K 888K 888K 0K 0K 888K 0K /system/bin/DTVServer
24K 24K 24K 24K 0K 0K 24K 0K /system/bin/DTVServer
4K 4K 4K 4K 0K 0K 4K 0K /system/bin/DTVServer
760K 252K 252K 252K 0K 0K 252K 0K
4K 0K 0K 0K 0K 0K 0K 0K
28K 28K 28K 28K 0K 0K 28K 0K /system/lib/libbinder.so
4K 4K 4K 4K 0K 0K 4K 0K /system/lib/libbinder.so
144K 144K 144K 144K 0K 0K 144K 0K /system/lib/libCAALService.so
4K 0K 0K 0K 0K 0K 0K 0K
20K 20K 20K 20K 0K 0K 20K 0K /system/lib/libCAALService.so
4K 4K 4K 4K 0K 0K 4K 0K /system/lib/libCAALService.so
4K 4K 4K 4K 0K 0K 4K 0K [anon:linker_alloc]
4K 4K 4K 4K 0K 0K 4K 0K [anon:linker_alloc]
4K 4K 4K 4K 0K 0K 4K 0K [anon:linker_alloc]
4K 4K 4K 4K 0K 0K 4K 0K
8K 0K 0K 0K 0K 0K 0K 0K
56K 56K 1K 0K 56K 0K 0K 0K /system/bin/linker
4K 4K 4K 4K 0K 0K 4K 0K /system/bin/linker
4K 4K 4K 4K 0K 0K 4K 0K /system/bin/linker
4K 4K 4K 4K 0K 0K 4K 0K
132K 20K 20K 20K 0K 0K 20K 0K [stack]
4K 0K 0K 0K 0K 0K 0K 0K [sigpage]
4K 0K 0K 0K 0K 0K 0K 0K [vvar]
4K 0K 0K 0K 0K 0K 0K 0K [vdso]
0K 0K 0K 0K 0K 0K 0K 0K [vectors]
------- ------- ------- ------- ------- ------- ------- -------
69776K 26
eg:logcat -c;logcat -G 10M;logcat -v time | grep -E "mmcp|native|wulijiao"
一般的打印信息的级别如下:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent (supress all output)
logcat -c;logcat -G 10M;logcat -v time
logcat -v time -v threadtime > /mnt/sda/sda1/nosync2/1204.txt &
logcat -v time -v threadtime >> /mnt/sda/sda1/nosync2/1204-1.txt &
调试手册:
一、anr信息产生的原因:
(1). KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应
(2). BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成
(3). ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成
二、anr信息解析:
当ANR发生时,往往通过Logcat和traces文件(目录/data/anr)的相关信息输出来定位问题,主要包括以下几个方面:
1 基本信息,包括进程号名,进程号,包名,系统build号,ANR类型等等
2 CPU使用信息,包括活跃进程的CPU平均占用率,IO情况等
3 线程堆栈信息,所属进程包括发生ANR的进程,其父进程,最近有活动的3个进程等
4.当ANR不是发生在system server进程时,mian log会有关键字"ANR in”,如果anr发生在 system server进程,则main log一般不会记录到关键字"ANR in”;
5.system_server进程发生死锁:搜索关键字“am_anr”;
6.通过trace log得知ANR发生在system_server进程,主线程在等待一个锁:
- waiting to lock <0x02e6b629> (a com.android.server.am.ActivityManagerService) held by thread 9
从此处无法得知问题点在哪里,根据第一节的介绍:如果ANR发生在system_server进程,那么main log会记录"WATCHDOG KILLING SYSTEM PROCESS"关键字及异常信息,我们去main log里面看看,确实存在该"WATCHDOG KILLING SYSTEM PROCESS"关键字
三、相关使用
错误信息获取:
logcat -s AndroidRuntime
四、错误
1.线程状态为“waiting for monitor entry”:等待进入临界区
eg:java.lang.Thread.State: BLOCKED (on object monitor)
2.线程状态为“waiting on condition”:等待触发条件,唤醒进程,或者是其调用了sleep
eg:java.lang.Thread.State: WAITING (parking):一直等那个条件发生;
java.lang.Thread.State: TIMED_WAITING (parking或sleeping):定时的,那个条件不到来,也将定时唤醒自己
3.大量线程在“waiting for monitor entry”:全局锁阻塞住了大量线程。
如果短时间内打印的 thread dump 文件反映,随着时间流逝,waiting for monitor entry 的线程越来越多,没有减少的趋势,可能意味着某些线程在临界区里呆的时间太长了,以至于越来越多新线程迟迟无法进入临界区。
4.大量线程在“waiting on condition”:获取第三方资源,第三方资源(比如说网络资源)迟迟未能获得导致未得到响应,大量线程处于等待状态,
5.线程状态为“in Object.wait()”:获得了监视器之后,又调用了 java.lang.Object.wait() 方法
Entry Set中等待:Waiting for monitor entry
Wait Set中等待:in Object.wait()