作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我尝试获取核心转储,所以我使用:
ulimit -c unlimited
我在后台运行我的程序,然后终止它:
kill -SEGV %1
但我刚刚得到:
[1]+ Exit 1 ./Test
并且没有创建核心转储。我对其他程序做了同样的事情并且它有效,那么为什么它不适用于所有程序?任何人都可以帮助我吗?
谢谢。 (GNU/Linux, Debian 2.6.26)
最佳答案
如果您的程序捕获 SEGV 信号并执行其他操作,则它不会调用操作系统核心转储例程。检查它是否不这样做。
在 Linux 下,出于安全原因,使用 setuid、seteuid 或其他一些参数更改其用户 ID 的进程被排除在转储核心之外(思考:/bin/passwd 在将/etc/shadow 读入内存时转储核心)
您可以在 UID 更改后通过调用 prctl() 来更改其用户 ID 的 Linux 程序上重新启用转储核心
关于linux - 我没有得到所有进程的核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827520/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!