Linux apport

open ulimit:

ulimit -c unlimited 不限制生成core文件大小
ulimit -c 0 关闭core文件生成开关
ulimit -c 1024 限定生成core文件的大小为1024

change naming rule:
/proc/sys/kernel/core_uses_pid 1 表示使用procid命名,0表示不使用
/proc/sys/kernel/core_pattern 可以设置格式化的 core 文件保存位置或文件名
echo “/opt/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
将会控制所产生的 core 文件会存放到 /corefile 目录下,产生的文件名为 core- 命令名 -pid- 时间戳
以下是参数列表 :
%p - insert pid into filename 添加 pid
%u - insert current uid into filename 添加当前 uid
%g - insert current gid into filename 添加当前 gid
%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号
%t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名


http://blog.163.com/wuzhiyong_430/blog/static/48883052201392224644723/

关于ubuntu12.10下面的core文件的几个法则:

1)重启之后,/proc/sys/kernel/core_pattern中的内容会被重新置为core;

2)重启之后,运行ulimit -c之后,得到的大小是0;

3)重启之后,产生的core文件是记录不下来的,既不会产生到当前目录下面,也不会产生到/var/crash下面;

4)重启之后,仅仅运行echo "/var/crash/core-%e">/proc/sys/kernel/core_pattern之后,不产生core文件;

5)重启之后,运行echo "/var/crash/core-%e">/proc/sys/kernel/core_pattern和ulimite -c 1024之后,第一次运行crash程序,会产生core文件;删除core文件,第二次运行crash程序,会产生core文件;删除core文件,第三次运行crash程序,会产生core文件;....;此时,运行ulimite -c产生的结果是0,但是,core文件仍然会产生;...;再次允许ulimite -c 1024,不会影响core文件的产生;

6)

 

技巧:通过在/root/.bashrc后面添加"ulimit -c 1024",可以永久的改变ulimit -c的限制。


peach在检测针对网络程序Fuzzing的过程中,由于速度过快,会忽略部分测试用例的获取。
即:目标程序产生crash了,但是Peach并没有尽快获取得到,从而导致程序出现问题。
需要修改/peach/agent/linux.py中的部分代码:
    def DetectedFault(self):
        '''
        Check if a fault was detected.
        '''
       
        try:
            # Give crash reporter time to find the crash
            time.sleep(3)#updated by wzy
            time.sleep(0.25)
           
            self.data = None
            for f in os.listdir(self.logFolder):
                if not f in self.startingFiles and (self.Executable == None or f.find(self.Executable) > -1):
                    fd = open(os.path.join(self.logFolder, f), "rb")
                    self.data = fd.read()
                    fd.close()
                   
                    os.unlink(os.path.join(self.logFolder, f))
                   
                    return True
               
           
            return False
       
        except:
            print sys.exc_info()
       
        return False



注意:需要注意Executable的内容的大小写。
        <Monitor class="linux.LinuxApport">
            <Param name="Executable" value=" XnView"/>
            <Param name="PeachApport" value="/usr/share/apport/apport"/>
        </Monitor>



How to use:

1.       create an empty dir to save output file later

cd /var/crash/

mkdir report

 

2.       unpack the crash file and output data to the dir you just create.

apport-unpack _var_www_html_automation_test_sipp.0.crash report

        

3.       move to the dir and use gdb run the sipp with CoreDump, type-in ‘bt’ to show the stack information

cd report

gdb /var/www/html/automation_test/sipp CoreDump

         (gdb) bt


通过/usr/share/apport/apport,是可以把相应的东西都获取得到。





wiki reference:

https://wiki.ubuntu.com/Apport/DeveloperHowTo

https://wiki.ubuntu.com/Apport


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值