Linux 特殊指令(有部分指令可能是安卓的)

本文详细介绍了dd指令在文件备份与恢复中的应用,并针对Android系统的ANR问题提供了调试方法与常见错误分析。

dd指令

 假如有一个文件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

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

logcat

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调试信息

调试手册:
一、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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值