मेरे पास एक एप्लिकेशन है जिस पर मैं काम कर रहा हूं, और जब मैं इसे सेगफुल करता हूं तो मुझे एक कोर डंप होने में परेशानी हो रही है। वास्तव में, मुझे असली कोर डंप फ़ाइलों को प्राप्त करने में परेशानी हो रही है। एक साधारण परीक्षण का मामला एक कोर डंप फ़ाइल उत्पन्न करेगा, लेकिन यह शून्य लंबाई है।
मैं ulimit -c unlimited
सेट हो गया हूं । यह 64-बिट उबंटू मेवरिक है। कोई संकेत कि आगे क्या करना है?
[dlee@dlee-oak t]$ ulimit -c
unlimited
[dlee@dlee-oak t]$ cat mkcore.cpp
int main() { *((int *)0) = 0; }
[dlee@dlee-oak t]$ g++ -g mkcore.cpp -o mkcore
[dlee@dlee-oak t]$ ./mkcore
Segmentation fault
[dlee@dlee-oak t]$ ls -l core*
-rw-r--r-- 1 dlee dlee 0 2010-12-21 15:00 core.2993
संपादित करें: अधिक जानकारी
[dlee@dlee-oak t]$ tail -n +1 /proc/sys/kernel/core_*
==> /proc/sys/kernel/core_pattern <==
core
==> /proc/sys/kernel/core_pipe_limit <==
0
==> /proc/sys/kernel/core_uses_pid <==
1
[dlee@dlee-oak t]$ tail /var/log/kern.log
<snip/>
Dec 21 16:07:40 dlee-oak kernel: [ 133.863045] mkcore[1589]: segfault at 0 ip 000000000040043d sp 00007fffbd025510 error 6 in mkcore[400000+aa000]
मैंने अभी महसूस किया है कि जिस फाइल सिस्टम पर कोर फाइल जेनरेट की जा रही है वह एक समानताएं साझा फ़ोल्डर है । (यह उबंटू उदाहरण मेरे मैक पर एक समानताएं वीएम पर चल रहा है)। जब मैं स्थानीय डिस्क पर एक निर्देशिका से ऐप को चलाता हूं, तो कोर फ़ाइल अपेक्षित रूप से उत्पन्न होती है।
इसलिए मैं इस सवाल को थोड़ा बदल दूंगा: यह prl_fs फाइल सिस्टम पर कोर फाइल क्यों नहीं बना रहा है? बस उत्सुक...
# 2 संपादित करें:
आप ध्यान दें कि जब यह शून्य लंबाई की कोर फ़ाइल बनाता है, तो यह प्रिंट नहीं होती है (core dumped)
। मैंने अपनी पवित्रता की दोहरी जांच की, और हाँ शून्य लंबाई कोर फ़ाइल वास्तव में बनाई जा रही है।
[dlee@dlee-oak t]$ X=$(pwd)
[dlee@dlee-oak t]$ ls -l core*
ls: cannot access core*: No such file or directory
[dlee@dlee-oak t]$ ./mkcore
Segmentation fault
[dlee@dlee-oak t]$ ls -l core*
-rw-r--r-- 1 dlee dlee 0 2010-12-22 00:41 core.6009
[dlee@dlee-oak t]$ cd ~
[dlee@dlee-oak ~]$ $X/mkcore
Segmentation fault (core dumped)
core_uses_pid
0 पर सेट करें या चलाएं sh -c 'echo foo >core.$$; exec ./mkcore'
।)
d_unhashed
यह सच है (?); फ़ाइल एक नियमित फ़ाइल नहीं है (नहीं); फ़ाइल आपके स्वामित्व में नहीं है (नहीं); आप फ़ाइल को नहीं लिख सकते (नहीं)। क्या समानताएं उपकरण के कर्नेल भाग का स्रोत उपलब्ध है?
tail -n +1 /proc/sys/kernel/core_*
(कोर डंप से संबंधित विभिन्न वैश्विक कर्नेल पैरामीटर दिखाता है)? क्या इसमें कोई संबंधित आउटपुट है/var/log/kern.log
?