平台信息:
内核:linux3.0.68 
系统:android/android5.1
平台:s5p4418

作者:庄泽彬(欢迎转载,请注明作者)

邮箱:2760715357@qq.com

摘要:调整android系统的init.rc文件中开启服务的oom的值,使之可以被杀死。

首先:我们来做一下实验,在android系统的init.rc文件中添加一个服务。这个服务只做一件事情不断的申请内存。

oom.c的源码:

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> #include <sys/stat.h>
#include <sys/types.h> #include <fcntl.h> /* Definition of AT_* constants */
#include <sys/stat.h> #define LOG_TAG "MyLed_jni"
#include <utils/Log.h>
#include <android/log.h> /* liblog */ int main(void)
{
int i = ;
char *buf;
fprintf(stderr,"--------------------------- success -------------------------------->\r\n"); sleep();
#if 1
for(i = ;i < ;i ++){
fprintf(stderr,"%d: oom test\r\n",i);
buf = malloc(0xffffff);
bzero(buf,0xffffff);
if(buf == NULL){
printf("--------------------------- fail ------------------------------->\r\n"); }else{
printf("--------------------------- success -------------------------------->\r\n");
}
}
while();
#endif
return ;
}

在android系统启动之后开启服务:start oom,

系统会打印出这样的调试信息:] Kernel panic - not syncing: Out of memory and no killable processes...。由于找不到可杀死的进程,导致系统重启,为了不让系统重启,我们需要修改进程的oom_adj的值。

1、 start oom 开启服务
2、ps 查看服务的pid号为1783
root 1783 1 9244 396 c0062998 b6eb1324 S /system/bin/oom
3、root@u4209:/ # cat /proc/1783/oom_adj
-17
-17表示服务不可被杀死。因此我们需要改变他的值为普通的进程的等级为0.这样oom服务即可被杀死不会发出kernel panic。导致系统重启.

改变oom服务的oom_adj的方法:
1、使用命令的方式:
echo 0 > /proc/$PID/oom_adj //$PID改成服务的pid号
echo f > /proc/sysrq-trigger //调用oom_kill杀死内存的hog进程

这样设置之后oom服务在申请内存过多的时候就不会导致系统重启,而是将进程杀死。

linux下的oom调试笔记【原创】的更多相关文章

  1. linux下多进程的调试

    linux下多进程的调试:  (1)follow-fork-mode           set follow-fork-mode [parent | child] ---- fork之后选择调试父进 ...

  2. Linux下的反调试技术

    Linux下的反调试技术 2014年01月30日 ⁄ 综合 ⁄ 共 2669字 ⁄ 字号 小 中 大 ⁄ 评论关闭 转自  http://wangcong.org/blog/archives/310 ...

  3. Linux下用Xdebug调试php

    Linux下用Xdebug调试php 博客分类: php PHPLinuxZendEclipseC# 为了调试PHP程序,安装一下xdebug. 官方网址: http://www.xdebug.org ...

  4. Ubuntu\Linux 下编写及调试C\C++

    一.在Ubuntu\Linux 下编写及调试C\C++需要配置基本的环境,即配置gcc编译器.安装vim编译器,具体配置安装步骤我在这里就不多说了. 二.基本环境配置完了我们就可以进入自己的程序编写了 ...

  5. linux下core文件调试方法

    http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映 ...

  6. linux下core文件调试方法(转载)

    转自于:http://blog.csdn.net/fcryuuhou/article/details/8507775 在程序遇到段错误不寻常退出时,一般是访问内存出错.但是不会给出程序哪里出现的问题, ...

  7. linux下安装一款笔记软件(为知笔记)

    今天突然想在ubuntu上安装一款跨平台(windows.linux.android)的笔记软件来做日常记录.文章记录以及网页收藏.原先并没有使用过类似的软件,只是见身边的很多人在使用印象笔记来做记录 ...

  8. linux下thinkphp取消调试模式后找不到网页解决方案

    1.最大嫌疑是Runtime目录权限不足,导致common~runtime.php文件无法生成, 解决:1.整个Runtime目录删除,让系统重新生成; 2.给Runtime及以下的所有文件足够权限0 ...

  9. [转载] Linux 下产生和调试core文件

    原地址:http://blog.csdn.net/shaovey/article/details/2744487 linux下如何产生core,调试core 在程序不寻常退出时,内核会在当前工作目录下 ...

随机推荐

  1. 魅族和三星Galaxy 5.0webView 问题Android Crash Report - Native crash at /system/lib/libc.so caused by webvi

    解决办法是当前activity 销毁的时候 webView.destroy(); hine: ConnectedState (when=-2ms what= arg1=!CMD_RSSI_POLL : ...

  2. HTML 5的基本标签

    1.  文件开始标签<html> 在任何的一个HTML文件里,最先出现的HTML标签就是<html>,它用于表示该文件是以超文本标识语言(HTML)编写的.<html&g ...

  3. Flutter GitLab 客户端

    F4Lab Flutter for GitLab. 欢迎参加一起完成

  4. QS之force(1)

    force This command allows you to apply stimulus interactively to VHDL signals(not variables), Verilo ...

  5. 【sqli-labs】 less15 POST - Blind- Boolian/time Based - Single quotes (基于bool/时间的单引号POST型盲注)

    错误不回显了 构造永真登陆 登陆成功了 虽然登陆成功了,但是数据库的数据还么有爆出来 构造一下用户名 ' or length(database())=8# 如果数据库名的长度不等于8,登陆会失败 猜测 ...

  6. struts 2 action result类型

    最近在管理公司老项目的时候发现如下代码: <bean name="detailPlayer" class="PlayAction" method=&quo ...

  7. 【剑指Offer】34、第一个只出现一次的字符

      题目描述:   在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).   解题思路: ...

  8. 15.5.2 【Task实现细节】骨架方法的结构

    尽管骨架方法中的代码非常简单,但它暗示了状态机的职责.代码清单15-11生成的骨架方 法如下所示: [DebuggerStepThrough] [AsyncStateMachine(typeof(De ...

  9. 软件工程1916|W(福州大学)_助教博客】团队Beta冲刺作业(第9次)成绩公示

    1. 作业链接: 项目Beta冲刺(团队) 2. 评分准则: 本次作业包括现场Beta答辩评分(映射总分为100分)+团队互评分数(总分40分)+博客分(总分130分)+贡献度得分,其中博客分由以下部 ...

  10. 支持移动触摸的jQuery图片Lightbox插件

    简介 这是一款支持移动触摸设备的简洁jQuery图片Lightbox插件.该LightBox插件可以在移动手机和桌面设备中运行,它具有响应式,预加载图片,键盘支持等特点,非常实用.它的特点还有: 响应 ...