debug
文章平均质量分 70
蓝白天际线
本人从事linux的嵌入式开发.
展开
-
android 查看gpio状态_神操作!Linux不写驱动控制直接控制GPIO
说到控制硬件,马上就能想到写个内核模块,驱动一下,像gpio_request、open、read、write……一堆API就出来了。其实,只是想简单的控制一下GPIO输入或者输出,不用这么复杂,系统已经实现相关驱动了,只需要了解怎么用就可以了。在用户空间通过sysfs控制GPIO,先访问/sys/class/gpio/,向export文件写入要操作的GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO输转载 2021-09-04 16:57:06 · 925 阅读 · 0 评论 -
一次spinlock死锁故障的定位(太经典,收藏!)
本文讲述一次spinlock死锁故障的定位过程,目的不在于问题本身,而在于展现一个内核bug的分析过程,提供一种分析思路,供大家参考。一、问题现象内核出现panic,kdump搜集到了vmcore。vmcore中直接导致panic的log信息为(包含相应CPU上的堆栈):点击(此处)折叠或打开Kernel panic-notsyncing:Watchdog detected hard LOCKUPoncpu 18 Pid:12410,comm:xxxxNottai...转载 2021-06-18 09:38:36 · 3252 阅读 · 0 评论 -
Android下pm 命令详解 - 安装APK
http://blog.csdn.net/xingfuyusheng/article/details/37911495Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下。这个命令与Package有关,且非常实用。所以研究之。0. Usage:usage: pm [list|pat转载 2017-12-07 17:51:51 · 1810 阅读 · 0 评论 -
Android截图命令screencap
查看帮助命令bixiaopeng@bixiaopeng ~$ adb shell screencap -vscreencap: invalid option -- vusage: screencap [-hp] [-d display-id] [FILENAME] -h: this message -p: save the file as a png. -d: speci转载 2017-12-15 18:15:46 · 851 阅读 · 0 评论 -
同时抓取带时间的logcat和kernel log的方法
adb shell logcat -v time -f /dev/kmsg | adb shell cat /proc/kmsg | tee kernel_logcat.txt转载 2017-12-07 11:51:13 · 7547 阅读 · 0 评论 -
android Logcat打印格式说明
1.logcat -c 清除已有log信息2.logcat -b main 显示主缓冲区的log logcat -b radio 显示无线缓冲区的log logcat -b events 显示事件缓冲区的log3.logcat -f [filename] 将log保存到指定的文件中,例如 logcat -b radio -f /d转载 2017-12-07 11:50:16 · 4102 阅读 · 0 评论 -
加载内核模块-Unknown symbol错误分析
在调试过程中,发现一个问题,编译生成一个KO文件,insmod加载后报错:Unknown symbol var_set_integer (err 0)Unknown symbol parse_arg_eq (err 0)问题分析思路:一、用命令查看内核中是否已有这个内核符号,例如要查看是否有var_set_integer这个内核符号,输入转载 2017-12-13 14:12:11 · 10596 阅读 · 0 评论 -
Android 重新挂载分区mount remount
一般在终端下操作Android系统,我们访问系统分区的时候,经常遇到Only Read的问题,此时需要以读写方式重新挂载需要操作的分区 1、重新挂载根分区 mount -o remount / 2、以读写的模式重新挂载 根分区 mount -o remount, rw / 3、以不含suid的模式重新挂载根分区 mount -o remount, nosuid / 4、重新挂载sys...转载 2017-11-07 09:29:17 · 8250 阅读 · 0 评论 -
一个bug引发的linux smp 血案(二)
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=25171069&id=3212735前一篇文章分析了,cpu1在on and off切换过程中出现softlockup,将触发watchdog reset, 解决方案是禁止抢占,今天分析linux smp相关的另一个bug,log如下:环境如下:高通芯片平台(双核), linu转载 2017-10-10 16:47:19 · 2039 阅读 · 0 评论 -
安装apk的几种方法
本人主要做android开发,调试时经常用到apk的安装,现总结一下Android安装apk包的五种方式(需要具备一些专业的知识才能使用):1. 使用手机助手,例如:豌豆荚,金山手机助手等工具;连接后直接可以在线安装。2. 使用 adb shell adb install xxxx.apk3. 直接copy到系统目录/system/app下,无安装界面。原创 2017-12-07 18:03:21 · 19739 阅读 · 1 评论 -
adb启动程序命令:adb shell am start
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.启动的方法为adb shell # am start -n {包(package)名}/{包名}.{活动(activity)名称}第一种情况: 从源代码,得知包名。程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(cal原创 2017-11-08 16:55:34 · 49369 阅读 · 1 评论 -
Android下面打印进程函数调用堆栈(dump backtrace)的方法
1. 为什么要打印函数调用堆栈?打印调用堆栈可以直接把问题发生时的函数调用关系打出来,非常有利于理解函数调用关系。比如函数A可能被B/C/D调用,如果只看代码,B/C/D谁调用A都有可能,如果打印出调用堆栈,直接就把谁调的打出来了。不仅如此,打印函数调用堆栈还有另一个好处。在Android代码里,函数命名很多雷同的,虚函数调用,几个类里的函数名相同等,即使用source insight工具看也未必...转载 2018-04-09 16:51:30 · 2282 阅读 · 0 评论 -
Android ANR原理分析
一、概述ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。那么哪些场景会造成ANR呢?Service Timeout:服务...转载 2018-08-14 13:36:02 · 576 阅读 · 0 评论 -
[cocos2dx]利用NDK崩溃日志查找BUG
摘要: 在android上开发c++应用, crash日志都是汇编码, 很难对应到c++代码中去. 通过此文, 你可以定位到程序崩溃时的C++代码, 精确查找问题.博客: http://www.cnblogs.com/jhzhu 邮箱: [email protected] 作者: 知明所以 时间: 2014-06-20背景介绍 本文主要内容: 利用android的crash ...转载 2018-08-02 11:02:10 · 748 阅读 · 0 评论 -
Fatal signal 11问题的解决方法
项目问题,目前已解决;在此记录。前些天在调试Camera模块;发现相同的代码在厂家提供的环境里边编译、就是ok的,在我们的源码树中编译,将HAL库推进去后、就会signal 11退出。一、现象 F/libc ( 4250): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4358 (CameraPrevie...转载 2018-08-02 15:26:17 · 10756 阅读 · 0 评论 -
Ubuntu adb devices : no permissions 解决方法
untun下USB连接Android手机后,使用adb devices 出现如下:List of devices attached???????????? no permissions同时在DDMS中显示设备名也显示????,也无法显示进程名,无法查看log。一、工具介绍android-sdk-linux_x86/tools下有一堆工具,今天要用的是:Android Debug ...转载 2018-11-22 17:12:11 · 780 阅读 · 0 评论 -
Android 6.0 开机时间分析工具bootchart的使用
前言最近分配到一个与开机优化的任务,无意中看到了bootchart这个工具,使用后感觉挺不错,特此记录分享下。源码分析进入系统源码system/core/init/目录下会有如下相关的源码文件bootchart.cpp bootchart.h grab-bootchart.sh readme.txt下面来一一分析这些文件 grab-bootchart.sh#!/bin/sh...转载 2019-02-18 15:51:41 · 534 阅读 · 0 评论 -
【Linux】grep 匹配多个关键字
grep 命令非常常用,经常用于匹配文本字符。一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?下面看几种情况:1、 grep ‘字符串’这是最普通的使用方式:匹配文件中包含 MANPATH 的那一行:cat manpath.config | grep 'MANPATH'2、 grep -v ‘字符串’与上例子相反,反向匹配匹配文件中不包含 ...转载 2019-05-09 10:20:26 · 16175 阅读 · 0 评论 -
串口下查看单个应用消耗内存的方法
以com.skyworth.sky_app_home为例:1.先用top查看该应用的PID查到该应用的PID是2372;2.进入到目录:/proc/2372,然后cat status,得到该进程的详细状态,包括内存消耗,截图如下:该截图的解释:Name 应用程序或命令的名字State 任务的状态,运行/睡眠/僵死/SleepAVG 任务的平均等待时间(以na...转载 2019-05-24 17:13:37 · 386 阅读 · 0 评论 -
一个panic bug的分析过程(一)
原文地址:一个panic bug的分析过程(一) 作者:android_bsp一个工作中遇到的bug的问题,分析一下流程,顺便把panic这种类似的bug流程做一些分析:环境: linux 3.0, arm 芯片平台首先看出问题时的backtrace 如下:[ 10.298767] regulator_init_complete: disabling vrf转载 2017-10-10 16:45:15 · 1994 阅读 · 0 评论 -
kernel panic 调试方法(3)-Backtrace
MIPS:MIPS结构的堆栈回溯过程。1)找特征指令,找到函数压栈的地方。mips函数入口先做一个动作,将函数返回地址压栈。指令二进制代码 伪指令27bdff78 addiu sp,sp,-136afbf0084 sw ra,132(sp) 通过第二条指令得出函数返回地址,通过第转载 2017-10-10 16:43:41 · 1623 阅读 · 0 评论 -
kernel panic 调试方法(2)-Oops信息的调试及栈回溯
Oops 信息来源及格式Oops 这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。Oops 信息包含以下几部分内容。1 一段文本描述信息。比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000”的信息,它说明了转载 2017-10-10 16:41:16 · 695 阅读 · 0 评论 -
Linux内核驱动之GPIO子系统(一)GPIO的使用
一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用转载 2016-07-11 18:12:53 · 349 阅读 · 0 评论 -
Android Native/Tombstone Crash Log 详细分析
转载出处:http://blog.sina.com.cn/nightingalewishAndroid 虽然已经有好几年了,但是NDK的开放速度却非常缓慢,所以目前网络上针对对Android Native Crash的分析说明还比较少,尤其是非常详细的分析方式更难以查询。因此大部分程序员在遇到难以进行addr2line的crash log时,会一筹莫展。事实上这份log中的其他转载 2016-05-25 10:56:18 · 708 阅读 · 0 评论 -
adb 通过网口来调试android设备
adb通过TCP/IP来调试Android设备 对Android比较熟悉的开发人员,对adb通过USB(USB连接Android设备)调试Android设备应该不会陌生,因为大部分资料都是这样做的。但是假如你的Android设备没有USB口,只有网口,能不能调试呢?(比如移植过程中通过NFS启动的Android系统,再比如你的设备上面USB设备匮乏。)答案是肯定的。本文我将以我最近的经验,介转载 2015-12-03 16:51:27 · 3500 阅读 · 0 评论 -
通过网络使用adb
通过网络使用adb 2010-03-17 14:13 在adb的说明文档中提到: “An ADB transport models a connection between the ADB server and one device or emulator. There are currently two kinds of transports:转载 2015-12-03 17:26:36 · 642 阅读 · 0 评论 -
objdump命令的使用
objdump命令的使用objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些sectionobjdump -D test转载 2015-08-21 17:53:07 · 510 阅读 · 0 评论 -
linux下如何打开core dump
linux下如何打开core dumpdump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息。在window下,要能生成dump文件,需要自己编写相应的代码。不过现在网上可以找到相应的代码,只要把它下载后然后加到自己的工程中去,就可以了! 在linux下面就简单的许多。只要打开相应的开关,linux会自动在程序crash时生成相应的core文件。这个文转载 2015-08-21 17:58:29 · 13494 阅读 · 0 评论 -
linux下,如何debug Suspend and resume
Question:如何在Linux 或 Android下得到足夠的information,來做Power Management的fine tune呢?Answer:在Linux或Android下,做power management 的調適時,常遇到沒有足夠的information,可以做為debug時的依據和參考我們整理了幾個常用的參數或Command,可供設計转载 2015-08-12 18:02:23 · 1274 阅读 · 0 评论 -
/sys/class/gpio 文件接口操作IO端口(s3c2440)
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入 Device Drivers —> GPIO Support —>转载 2016-07-11 18:15:23 · 407 阅读 · 0 评论 -
Android调试方法
Android调试方法 1 dump虚拟内存 cat /proc/xxxx/maps 虚拟内存的位置可能有如下地方: -内核的defconfig文件 -build/core/prelink-linux-arm.map -build/tools/apriori/prelinkmap.c -bionic/linke转载 2016-11-29 21:31:36 · 473 阅读 · 0 评论 -
kernel panic 调试方法(1)
http://blog.csdn.net/lickylin/article/details/19172725kernel panic 表示Linux kernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。 下面讲解几种用于查找出错函数定位的方法首先看一下出错的ker转载 2017-10-10 16:39:39 · 1919 阅读 · 0 评论 -
Android性能相关常用命令收集
Android性能相关常用命令收集1.CUP(1)adb shell (进入linux的底层)(2)echo 3>/proc/sys/vm/drop_caches (清除一下系统cache)(3)top -d 1 | grep com.baidu.BaiduMap (以百度地图为例,每一秒打印一次资源利用情况) top -d 1 //查看所有的2.Mem (1转载 2017-08-02 15:03:13 · 496 阅读 · 0 评论 -
Linux性能测试 命令大全
Linux 系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存、CPU、硬盘……)出了问题。在 linux 系统中,所有的运行 参数保存在虚拟目录/proc 中,换句话说,我们使用的性能监控工具取到的数据值实际上就 是源自于这个目录,当涉及到系统高估时,我们就可以修改/proc 目录中的相关参数了,当 然有些是不能乱改的。转载 2017-08-02 15:00:05 · 538 阅读 · 0 评论 -
性能测试常用的linux命令
查看日志 awk '$4 ~/^\[27\/Nov\/2008:15:2[0-5]/ {print $0}' access_log |wc -l查看日志中每秒产生多少个动态链接 tail -n 100000 /data1/logs/access.log | grep "06/Mar/2008:15:29:00" | wc -l 查看进程编号ps aux|转载 2017-08-02 14:58:20 · 639 阅读 · 0 评论 -
Android性能测试常用命令
1. 启动时间pm list packages 列出包名adb shell pm list packages:列出所有的包名。adb shell dumpsys package:列出所有的安装应用的信息dumpsys package com.android.XXX:查看某个包的具体信息adb shell dumpsys window w | grep \/ | grep转载 2017-08-02 14:55:59 · 453 阅读 · 0 评论 -
android性能测试工具dumpsys命令的用法
dumpsys命令是android手机自带的调试工具,下面详解讲解dumpsys用法一. 初识dumpsysadb shell //进入手机shelldumpsys | grep "DUMP OF SERVICE" //列举当前手机所有支持的dumpsys命令1212运行上面指令,结果(不同手机结果会有所差异)DUMP OF SE转载 2017-08-02 14:38:40 · 646 阅读 · 0 评论 -
控制Linux内核启动中的打印
如果正常配置了输入输出终端,则内核启动过程中会将很多信息输出到控制台上。这些信息中有些表示严重错误,有些只是一般的提示信息。 在平台成熟后,继续保留这些信息既不美观,也会影响启动速度(串口的波特率很低)。因此要尽量屏蔽不重要的信息。这需要对内核进行一些改造。内核打印分析内核启动过程中的打印都是通过printk()输出的,按照重要程度,内核把这些打印分类为8个级别:=========转载 2016-12-23 09:58:35 · 1592 阅读 · 0 评论 -
How to modify linux time
修改Linux时间一般涉及到3个命令:date, clock, hwclock date: 修改系统当前的时间: [root]#date –s ‘2005/12/5 10:01:00 系统当前的时间改成2005年12月5日,10点01分 这个修改在系统重启后就失效了,因此为了将这个时间永久生效,需要将修改的时间写入CMOS。 看CMOS的时间: #cloc转载 2015-08-25 16:21:38 · 349 阅读 · 0 评论