怎么查看Linux的core开关,以及如何打开和关闭

怎么查看Linux的core开关,以及如何打开和关闭,第1张

dump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息。在window下,要能生成dump文件,需要自己编写相应的代码。不过现在网上可以找到相应的代码,只要把它下载后然后加到自己的工程中去,就可以了!在linux下面就简单的许多。只要打开相应的开关,linux会自动在程序crash时生成相应的core文件。这个文件和window下的dump文件类似。

下面是简单的一些步骤:

1.查看当前是否已经打开了此开关

通过命令:ulimit -c 如果输出为 0

,则代表没有打开。如果为unlimited则已经打开了,就没必要在做打开。

2.通过命令打开

ulimit -c unlimited .然后通过步骤1,可以监测是否打开成功。

3.如果你要取消,很简单:ulimit -c 0 就可以了

通过上面的命令修改后,一般都只是对当前会话起作用,当你下次重新登录后,还是要重新输入上面的命令,所以很麻烦。我们可以把通过修改

/etc/profile文件 来使系统每次自动打开。步骤如下:

1.首先打开/etc/profile文件

一般都可以在文件中找到 这句语句:ulimit -S -c 0 /dev/null

2&1.ok,根据上面的例子,我们只要把那个0 改为

unlimited 就ok了。然后保存退出。

2.通过source /etc/profile 使当期设置生效。

3.通过ulimit -c 查看下是否已经打开。

其实不光这个命令可以加入到/etc/profile文件中,一些其他我们需要每次登录都生效的都可以加入到此文件中,因为登录时linux都会加载此文件。比如一些环境变量的设置。

还有一种方法可以通过修改/etc/security/limits.conf文件来设置,这个方法没有试过,也是网上看到。不过上面两种就可以了!

最后说一下生成core

dump文件的位置,默认位置与可执行程序在同一目录下,文件名是core.***,其中***是一个数字。core

dump文件名的模式保存在/proc/sys/kernel/core_pattern中,缺省值是core。通过以下命令可以更改core

dump文件的位置(如希望生成到/tmp/cores目录下)

echo “/tmp/cores/core”

/proc/sys/kernel/core_pattern

设置完以后我们可以做个测试,写个程序,产生一个异常。然后看到当前目录会有个core*的文件。然后我们可以

gdb core。* 程序 进行调试。

core文件是由应用程序收到系统信号后崩溃产生的,该文件中记录了程序崩溃的原因(例如收到那种信号),调用堆栈和崩溃时的内存及变量值等等的信息。

打开core文件与编译时使用的编译器有关,但绝大多数linux程序是使用gcc编译器编译的,因此可使用对应gdb调试器打开,命令格式如下:

$ gdb 应用程序文件名 core文件名

举例:

$ gdb /usr/bin/gedit ~/core------ 查看由gedit崩溃产生的core文件

(gdb) bt------ 或者backtrace, 查看程序运行到当前位置之前所有的堆栈帧情况)

(gdb) quit ------ 退出

如果不知道core文件由哪个文件产生的,可使用file命令显示

$ file core


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7180868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存