ORACLE RAC--在RAC节点上测试产生并调试core文件

简介:

ORACLE RAC--在Linux下测试产生并调试core文件

1.查看服务器内核版本:

[oracle@rac1 ~]$ uname -a 
Linux rac1 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux

再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。

[oracle@rac1 ~]$ ulimit -a 
core file size (blocks, -c) 0 
data seg size (kbytes, -d) unlimited 
scheduling priority (-e) 0 
file size (blocks, -f) unlimited 
pending signals (-i) 16384 
max locked memory (kbytes, -l) 32 
max memory size (kbytes, -m) unlimited 
open files (-n) 4096 
pipe size (512 bytes, -p) 8 
POSIX message queues (bytes, -q) 819200 
real-time priority (-r) 0 
stack size (kbytes, -s) 10240 
cpu time (seconds, -t) unlimited 
max user processes (-u) 2047 
virtual memory (kbytes, -v) unlimited 
file locks (-x) unlimited

2. 写个简单的程序,看看core文件是不是会被产生。

[oracle@rac1 ~]$ cat test.c

#include <stdio.h> 
#include <stdlib.h>

static void sub(void); 
int main(void) 

sub(); 
return 0; 
}

static void sub(void) 

int *p = NULL; 
/* derefernce a null pointer, expect core dump. */ 
printf("%d", *p); 
}


[oracle@rac1 ~]$ gcc -o test -g test.c //加上-g参数,便于使用gdb调试器 
[oracle@rac1 ~]$ time ./test 
Segmentation fault

real 0m0.004s 
user 0m0.000s 
sys 0m0.003s

[oracle@rac1 CR_TEST]$ ls -l core.* 
ls: core.*: No such file or directory

没有找到core文件,我们改改ulimit的设置,让它产生。1024是随便取的,要是core文件大于1024个块,就产生不出来了。

[oracle@rac1 ~]$ ulimit -c 1024

[oracle@rac1 CR_TEST]$ ulimit -a 
core file size (blocks, -c) 1024 
data seg size (kbytes, -d) unlimited 
scheduling priority (-e) 0 
file size (blocks, -f) unlimited 
pending signals (-i) 16384 
max locked memory (kbytes, -l) 32 
max memory size (kbytes, -m) unlimited 
open files (-n) 4096 
pipe size (512 bytes, -p) 8 
POSIX message queues (bytes, -q) 819200 
real-time priority (-r) 0 
stack size (kbytes, -s) 10240 
cpu time (seconds, -t) unlimited 
max user processes (-u) 2047 
virtual memory (kbytes, -v) unlimited 
file locks (-x) unlimited

[oracle@rac1 CR_TEST]$ ./test 
Segmentation fault (core dumped) 
[oracle@rac1 CR_TEST]$ ls -l core.* 
-rw------- 1 oracle oinstall 139264 Sep 27 13:35 core.29664

由上述的输出信息,可以看到多了个(core dumped)。确实产生了一个core文件,29664是该进程的PID。我们用GDB来看看这个core。

3.使用gdb命令调试:

[oracle@rac1 CR_TEST]$ gdb --core=core.29664 
GNU gdb Fedora (6.8-37.el5) 
Copyright (C) 2008 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <
http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "i386-redhat-linux-gnu". 
(no debugging symbols found) 
Core was generated by `./test'. 
Program terminated with signal 11, Segmentation fault. 
[New process 29664] 
#0 0x080483b8 in ?? () 
(gdb) bt 
#0 0x080483b8 in ?? () 
#1 0x00ab9ff4 in ?? () 
#2 0x00ab8204 in ?? () 
#3 0xbf8d6198 in ?? () 
#4 0x080483f9 in ?? () 
#5 0x009a4e25 in ?? () 
#6 0x00000000 in ?? ()

此时使用bt看不到backtrace,也就是调用堆栈,原来GDB还不知道符号信息在哪里。需要指定文件位置:

(gdb) file ./test 
Reading symbols from /home/oracle/CR_TEST/test...done. 
(gdb) bt 
#0 0x080483b8 in sub () at test.c:15 
#1 0x0804839a in main () at test.c:7

此时backtrace出来了。

(gdb) l 12 
7 sub(); 
8 return 0; 
9 } 
10 
11 static void sub(void) 
12 { 
13 int *p = NULL; 
14 /* derefernce a null pointer, expect core dump. */ 
15 printf("%d", *p); 
16 }

 

以上测试过程,即为在RAC节点上测试产生并调试core文件的全过程。



     本文转自vcdog 51CTO博客,原文链接:http://blog.51cto.com/255361/837517,如需转载请自行联系原作者



相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
2月前
|
存储 缓存 算法
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
|
2月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
32 2
|
25天前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
28天前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
26 2
|
29天前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
10 0
|
3月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
42 1
|
1月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
13 0
|
1月前
|
存储 测试技术 C++
P2P网络下分布式文件共享场景的测试
P2P网络下分布式文件共享场景的测试
29 6
|
1月前
|
存储 运维 Oracle
Oracle系列十八:Oracle RAC
Oracle系列十八:Oracle RAC
|
1月前
|
算法 异构计算
m基于FPGA的Alamouti编码verilog实现,包含testbench测试文件
m基于FPGA的Alamouti编码verilog实现,包含testbench测试文件
28 5

推荐镜像

更多