2016-01-03 45 views
3

TLDR:即使在设置ulimit并查看apport后,仍无法找到核心转储。生病辛苦得到一个单一的回溯。底部的问题。哪里是核心转储? (Linux)

我在这里有一个小噩梦。我目前正在做一些C编码,在我的情况下,这总是意味着公吨的段错误。大部分时间我都能够很少或没有问题地重现错误,但是今天我碰壁了。

我的代码产生不一致的段错误。我需要它谈论的核心转储。

因此,我正在寻找一个核心转储,为我的小宝贝a.out。那就是当我开始拉我的头发

我的直觉告诉我,核心转储文件应该存储在工作目录的某个地方 - 显然不是这种情况。看完this后,我高兴地输入:

ulimit -c 750000 

而......没什么。我的程序输出告诉我它做了核心转储 - 但我无法在cwd中找到它。所以在阅读this后,我了解到我应该做的事情是apportcore_pattern

更改core_pattern似乎有点吃不消得到一个核心转储,我真的不wan't惹它,因为我知道我忘记它以后。我倾向于把这些事情搞得非常糟糕。

Apport拥有选择哪个核心转储有价值,而哪些不具有这种神奇属性。它的日志告诉我...

ERROR: apport (pid 7306) Sun Jan 3 14:42:12 2016: executable does not belong to a package, ignoring 

...我的程序不够好。


  1. 这哪里是核心转储文件?
  2. 有没有办法让一个核心转储手动一次,而不必设置一切?我很少需要这些文件作为文件,大部分时间GDB都足够了。像let_me_look_at_the_core_dump <program name>就好了。

我已经秃顶了一点,所以任何帮助,将不胜感激。

+0

尝试http:// askubuntu。COM /问题/ 246972 /让-Apport会副渔获物 - 崩溃 - 全系统? – lreeder

+0

你试过'find/-name'core *''? (出去喝杯咖啡让你头脑清醒,因为它会运行一段时间)。感受你的痛苦,祝你好运! – shellter

+1

为什么不将核心大小设置为无限制? –

回答

3

所以,今天我才知道:

  • ulimit复位重启后壳。
  • 我在我的.zshrc - zsh中嵌入了一些命令后重新打开了自己,犯了一个很大的错误。

用这个摆弄了一下之后,我也找到了第二个问题的解决方案。制作外壳脚本:

ulimit -c 750000 
./a.out 
gdb ./a.out ./core 
ulimit -c 0 
echo "profit"