oracle设置core文件大小,Linux的Core文件设置与调试_李daxin的博客-程序员宅基地

技术标签: oracle设置core文件大小  

一、运行时错误

任何人写程序都会出错,正如《C++编程规范》所说,真正可怕的错误不是编译时的错误,而是运行时错误。

有的程序可以通过编译, 但在运行时会出现Segment fault(段错误)

这通常都是指针错误(一般就是空指针)引起的,或者访问了不能访问的内存(数组越界,系统保护)

二、core文件

我们不可能用GDB一句一句的去找,真正的英雄都善于使用手中的武器。这就是core file

所谓core,就是当程序down掉的时候,操作系统把程序的内存内容dump下来,这个动作就是core dump,动作的结果就是core文件

产生:

1.程序挂了,操作系统产生

2.通过gcore $pid命令直接导出相应进程的core文件,此命令运行后, 会恢复程序的执行, 不影响程序的运行

3.通过另一个进程发送SIGABRT信号给当前进程, 虽然也能产生core文件,但是程序随着一起终止掉

三、core文件开关设置

1.终端级别

怎么样才能让程序down掉的时候,自动core dump呢?可以通过 ulimit查看和设置

#查看core文件的信息 ulimit -a

[email protected]:~$ ulimit -a core file size          (blocks, -c) 0 data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 20 file size               (blocks, -f) unlimited pending signals                 (-i) 16382 max locked memory       (kbytes, -l) 64 max memory size         (kbytes, -m) unlimited open files                      (-n) 1024 pipe size            (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 real-time priority              (-r) 0 stack size              (kbytes, -s) 8192 cpu time               (seconds, -t) unlimited max user processes              (-u) unlimited virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited [email protected]:~$

可以看到,core file size 是0,那就是说程序down了的时候,不会生成core文件,这个功能是关闭的。

可以使用  ulimit -c unlimited 设置允许当前生成没有大小限制的core file

[email protected]:~$ ulimit -c unlimited

只能对当前终端有效,退出就无效。

这样做,是因为只想临时生成core file,不需要每次crash时都自动生成。

2.用户级别

用户在自己的~/.bash_profile中加入

ulimit -S -c unlimited > /dev/null 2>&1

这样设置后允许当前用户生成没有大小限制的core dump文件

3.系统级别

(1)对所有用户

修改/etc/profile,加入或者修改

ulimit -S -c unlimited > /dev/null 2>&1

这样设置后允许所有用户生成没有大小限制的core dump文件。

优点:不需要重起系统

缺点:无法控制只让某些用户生成core dump文件

(2)上面这种方法也是有缺点的,那就是Tom用会产生core,Jerry也会产生,实行上我们只要Tom产生

修改/etc/security/limits.conf 可做到

ps.很多系统上限都可以通过修改这个文件改变,如最大子进程个数,最大打开文件数等等。这个文件开头有详细的注释,对如何修改这个文件做了说明。

[email protected]:/etc/security$ cat limits.conf  # /etc/security/limits.conf  #                  #*               soft    core            0 #root            hard    core            100000 # End of file [email protected]:/etc/security$

我们看到了 * soft core 0 这一行,他表示对所有用户生产dump,但默认是注释了的

如果只想对某些用户或用户组打开core dump,可以加入

Tom soft core 0

@TomGroup soft core 0

#0是大小

优点:可以针对特定用户或特定组打开core dump文件

缺点:需要重起系统

四、core文件名称设置

1.pid信息

在/proc/sys/kernel/core_uses_pid中配置是否core带pid的扩展

文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxxx;(xxxxx如12345为pid)

为0则表示生成的core文件统一命名为core

[email protected]:~$ cat /proc/sys/kernel/core_uses_pid  0

可通过以下命令修改此文件(root)

[email protected]:/home/ju# echo "1" > /proc/sys/kernel/core_uses_pid

2.保存位置和文件名格式

/proc/sys/kernel/core_pattern 中配置生成文件的文件名和保存位置

[email protected]:~$ cat /proc/sys/kernel/core_pattern  core  #可通过以下命令修改此文件: [email protected]:/home/ju# echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_pattern #当然也可以是 sysctl -w kernel.core_pattern=/tmp/core-%e-%p-%t

可以将core文件统一生成到/tmp目录下,产生的文件名为 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 添加命令名

#我是生成到自己的当前目录下方便使用

echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern

Ø  在rc.local中加入以下一行,这将使程序崩溃时生成的coredump文件位于/data/coredump/目录下:

echo ”/data/coredump/core-%e-%p-%t“ > /proc/sys/kernel/core_pattern

五、调试core

用gdb进行查看core文件的内容

gdb [exec file] [core file]

之后基本上只用bt就可以找到信息了,当然还有where, frame, up, down, print等活用。

五、测试

实践出真知

1.代码

1: //a test file   2:    3: #include   4: using namespace std;    5:    6: void test_fun()   7: {   8:     char* szTmp = 0x00;   9:   10:     //null ptr  11:     *szTmp = 0x11;  12: }   13:   14: int main()  15: {  16:     test_fun();  17:     return 0;      18: }   19:

2.编译

#编译时加  -g 参数得到符号

[email protected]:~/study/dump$ g++ -g -o dump dump.cpp  [email protected]:~/study/dump$ ls -l 总用量 40 -rwxr-xr-x 1 ju ju 34437 2012-04-10 00:06 dump -rw-r--r-- 1 ju ju   154 2012-04-10 00:05 dump.cpp [email protected]:~/study/dump$

3.运行

运行出错,出现了core文件(会比较大)

[email protected]:~/study/dump$ ./dump  段错误 (core dumped)  [email protected]:~/study/dump$ ls -l 总用量 160 -rw------- 1 ju ju 221184 2012-04-10 00:06 core-dump-17044-1333987618 -rwxr-xr-x 1 ju ju  34437 2012-04-10 00:06 dump -rw-r--r-- 1 ju ju    154 2012-04-10 00:05 dump.cpp [email protected]:~/study/dump$

4.调试

[email protected]:~/study/dump$ gdb ./dump core-dump-17044-1333987618  GNU gdb (GDB) 7.1-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. #好多xxx #最后可以看到 Loaded symbols for /lib/ld-linux.so.2 Core was generated by `./dump'. Program terminated with signal 11, Segmentation fault. #0  0x080485a4 in test_fun () at dump.cpp:9 9        *szTmp = 0x11; (gdb)  #很容易就定位了,一般指针出错都会有完整的堆栈信息,而数组越界则堆栈信息不完整显示

六、声明

1.不对文章正确性做保证,只为本人学习之用。

2.本文参考了好多其它作者的文章,也引用了一些文字,对他们的知识共享精神表示感谢。

3.本文链接:

(1)好像加了这个就会被网易屏蔽

4.本文可以任意转载修改使用,但请保证文章完整性,不要误导他人。

5.注意身体,早点休息,不做就别做,做就做好。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34549315/article/details/116416272

智能推荐

SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。_吧主的博客-程序员宅基地

点击上方 "程序员小乐"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!关注订阅号「程序员小乐」,收看更多精彩内容每日英文When you are free from desire, you will be happy, because you will never be disappointed.当你没有欲望,你就会快乐,因为你永不会失望。每日掏心话懂得进退,才能成就人生;懂得取舍,才能淡定从容;懂得知足,才能怡养心性;懂得删减,才能轻松释然;懂得变通,才会少走.

ode45matlab例子,ode45(ode45用法举例)_意博思诺教育的博客-程序员宅基地

ode45是用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长的方法。而我们平时用的4阶和5阶龙格库塔法的公式中步长是给定的。具体算法和原理你可以看.ode45的初始条件是否必须是在x=0处没有必要 只要是选取的初值对应的t等于tspan(1) 我们看下面一个例子,对于dx/dt=2t. %注意下面的t0必须等于2,因为我们的选择的初值条件是t=2,ode45默认将t0作为初值.请问这个要怎...

酷狗音乐9.2.0_酷狗音乐安卓版 v9.2.0下载 - 艾薇下载站_weixin_40009026的博客-程序员宅基地

酷狗音乐是一款能在手机听歌下载的app。它是中国领先的互联网音乐公司,在开发优秀音乐类互联网应用、服务及核心技术方面,保持国内业界的领先地位。采用先进的构架设计研发,为用户设计了高传输效果的文件下载功能,通过它能实现数据分享传输,还有支持用户聊天、播放器等完备的网络娱乐服务,好友间也可以实现任何文件的传输交流,通过酷狗,用户可以方便、快捷、安全地实现音乐查找,即时通讯,文件传输,文件共享等网络应用...

Stata做空间杜宾模型、莫兰指数等操作_夏末嘞的博客-程序员宅基地_stata空间杜宾模型步骤

以下内容完全由本人在实际操作中搜集整理总结得到,很细致的介绍:从如何在stata中导入数据,怎么定义面板数据,再到如何做局部和全局空间相关性检验(莫兰指数)和空间杜宾模型等。1、导入面板数据在excel中输入如下格式的数据:打开STATA,data-data editor- data editor(edit),将excel中数据复制上去接着在STATA主界面的command窗...

Fedora 27/26/25 NVIDIA 驱动安装_sayang_shao的博客-程序员宅基地_fedora安装驱动

Fedora 27 安装NVIDIA 驱动这篇教程适用于GeForce 6/7/8/9/200/300/400/500/600/700/800/900/10 系列的显卡;测试驱动程序为304.xx,340.xx ,381.xx,384.xx,387.xx;

JS—DOM操作_a512394464的博客-程序员宅基地

节点分为三类:1.元素节点:标签<div></div>2.文本节点:标签内的纯文本。3.属性节点:标签内的属性,id或class查找元素:getElementById();参数传递一个元素的id值,这样就可以获取到该元素节点DOM操作必须等待HTML文档加载完毕,才可以获取怎样获取?1.把<script>...

随便推点

腾讯云Centos7系统安装phpmyAdmin_kewlgrl的博客-程序员宅基地

上次折腾的使用腾讯云建一个基于自己域名的网站,是基于购买腾讯云提供的云数据库,今天试了一下自己在云主机上安装phpmyAdmin并成功搭建wordpress。          一、安装phpMyAdmin      下载官网链接:https://www.phpmyadmin.net/downloads/      由于云主机上可能安装的php版本是5.4(小于5.5),所以建议下

使用WebServlet注解和web.xml配置servlet映射路径的区别及注意事项_王祺灏的博客-程序员宅基地_web.xml 映射路径

配置servlet映射路径一、使用web.xml配置url二、使用servlet注解设置url三、有关使用web.xml重写WebServlet注解一、使用web.xml配置url格式: <servlet> <!--自定义,一般为类名--> <servlet-name>servletDemo1</servlet-name> <!--一定是package + .类名-->

telerik grid ajax,Telerik ajax 控件学习笔记 - Ajax_唐文成的博客-程序员宅基地

产品版本:RadControls for ASP.NET Ajax Q1 2009Telerik 的控件实现 Ajax 的方式比 asp.net ajax 要简单些。有如下特点:1. 不需要拖放很多 Update Panel,triggers.只要在现有 webform 的底部加一个 RadAjaxManager,然后点 "Configure Ajax Manager",在其中配置更新关系即可。其...

记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。_p15097962069的博客-程序员宅基地

记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。

RandomAccessFile与内存映射文件_junJZ_2008的博客-程序员宅基地

RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(...

解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的问题 和Could not retrieve mirrorlist_永远IT菜鸟的博客-程序员宅基地

1、Loaded plugins: fastestmirror Determining fastest mirrors其大概意思是fastestmirror不能使用,fastestmirror是yum的一个加速插件,具体我也没有仔细了解过,可能是系统不支持或者缺少组建导致的。处理办法就是禁用这个插件,方法如下:[email protected]]# vi  /etc/yu

推荐文章

热门文章

相关标签