কোর ফেলে দেওয়া হয়েছে, তবে মূল ফাইলটি কি বর্তমান ডিরেক্টরিতে নেই?


276

একটি সি প্রোগ্রাম চালানোর সময়, এটি "(কোর ডাম্পড)" বলছে তবে আমি বর্তমান পথের অধীনে কোনও ফাইল দেখতে পাচ্ছি না।

আমি সেট এবং যাচাই করেছি ulimit:

ulimit -c unlimited 
ulimit -a 

আমি "কোর" নামে একটি ফাইল সন্ধান করার চেষ্টা করেছি, কিন্তু কোর ডাম্পড ফাইলটি পাইনি?
কোন সহায়তা, আমার মূল ফাইলটি কোথায়?


1
প্রোগ্রামটি কি কোনও পর্যায়ে chdir ডাকে? যদি তাই হয়, সেখানে দেখুন।
উইলিয়াম পার্সেল

2
প্রোগ্রামটি কি তার কার্যকরী ডিরেক্টরি পরিবর্তন করে? ও দিক দেখ.
রিচার্ড পেনিংটন

আমি সাম্প্রতিক ফাইলটির জন্য পুরো হার্ডড্রাইভ অনুসন্ধান করব;)
হামিশ গ্রুবিজন

1
ওহো নেই এটি নেই ... আমি এটি পরীক্ষা করেছি .. প্রোগ্রাম সিডিআর থেকে / এমএনটি এবং / আমি উভয় ডিরেক্টরি পরীক্ষা করেছি কিন্তু ফাইলটি খুঁজে পেল না। এমনকি আমি "- কোর" /-নাম খুঁজে পেয়েছি। এমনকি এটি আমাকে ফাইলটি দেখায় নি। প্রোগ্রামটি সি + স্ক্লাইট ব্যবহার করে, মূল মানগুলি সন্নিবেশ করানোর সময় এটি প্রথম বারের জন্য
দোষ

7
হ্যাঁ, আপনি যদি /proc/sys/kernel/core_patternকোনও স্ট্রিং দিয়ে শুরু করে ওভাররাইড করেন /tmpতবে আপনার কোর ডাম্পগুলি সেখানে চলে যাবে।
মুহুর্তের

উত্তর:


240

/Usr/src/linux/Docamentation/sysctl/kernel.txt পড়ুন ।

[/ proc / sys / কার্নেল /] কোর_প্যাটার্ন একটি কোর ডাম্পফিল প্যাটার্নের নাম নির্দিষ্ট করতে ব্যবহৃত হয়।

  • যদি প্যাটার্নের প্রথম অক্ষরটি একটি '|' হয়, কার্নেলটি বাকি প্যাটার্নটি চালানোর আদেশ হিসাবে বিবেচনা করবে। কোর ডাম্প কোনও ফাইলের পরিবর্তে সেই প্রোগ্রামের স্ট্যান্ডার্ড ইনপুটটিতে লেখা হবে।

কোর ডাম্পটিকে ডিস্কে লেখার পরিবর্তে আপনার সিস্টেমটি abrtপ্রোগ্রামে প্রেরণ করার জন্য এটি কনফিগার করা হয়েছে । অটোমেটেড বাগ রিপোর্টিং টুল সম্ভবত হিসাবে নথিভুক্ত না যেমন হয় উচিত হবে ...

যাই হোক না কেন, দ্রুত উত্তরটি হ'ল আপনার মূল ফাইলটি সন্ধান করতে সক্ষম হওয়া উচিত /var/cache/abrt, যেখানে অনুরোধ abrtকরার পরে এটি সংরক্ষণ করে। একইভাবে, অ্যাপোর্ট ব্যবহার করে অন্যান্য সিস্টেমগুলি কোয়ার বিছিন্ন করে /var/crashএবং আরও অনেক কিছু করতে পারে।


30
হ্যাঁ, আমি নীচের সামগ্রীর প্রতিধ্বনি "কোর।% ই।% p"> / proc / sys / কার্নেল / কোর_প্যাটার্ন সহ কোর_প্যাটার্ন সম্পাদনা করেছি .. এখন এটি বর্তমান ডিরেক্টরিতে মূল ডাম্প ফাইল তৈরি করে। "core.giis.12344" ইত্যাদি নামের সাথে আপনার উত্তর / মন্তব্য / ইঙ্গিতগুলির জন্য আপনাকে সকলকে ধন্যবাদ।
webonal.org

20
কেবলমাত্র লক্ষণীয় যে ফেডোরা 18 অ্যাব্র্যাট প্রোগ্রামটি মূল ডাম্পগুলির /var/spool/abrt/পরিবর্তে সংরক্ষণ করছে/var/cache/abrt
নেলসন

4
প্রত্যেককে সিস্টেম কনফিগারেশন ব্যবহার করার পরিবর্তে ব্যবহারকারীদের নিজের জন্য এটি কনফিগার করার অনুমতি দেওয়ার কোনও উপায় আছে কি?
allyourcode

যখন এই কমান্ডটি চালিত হয় এবং প্রক্রিয়া শুরু হয়, তখন কি স্টাডআউট এবং স্ট্ডার ডিফল্টরূপে খোলা হয় না? আমি খুব অদ্ভুত জিনিস ঘটতে দেখছি। যখন আমি আমার কাস্টম ফাইল (অ্যাপলগ.টিএসটিএসটি) এর স্টাড্রারের স্টুডআউট এবং স্টডআউট ব্যবহার করি, তখন আমি যে ফাইলটি অন্য ফাইলে (মাইকোর.বিআইএন) লিখছি তা ফাইলটিতে পুনঃনির্দেশিত করা হচ্ছে যা আমি স্টাডআউট এবং স্টডারার (অ্যাপলগ.টিএসটি) ধরতে ব্যবহার করেছি have । এটি সম্পর্কে একটি ভাল পড়া আছে? সুপারিশ করুন. আপনাকে ধন্যবাদ
এম কে ..

20
আর্চলিনাক্স স্টোর করডাম্পসে সিস্টেমেড/var/lib/systemd/coredump/
ফ্রাঙ্কোইস

224

সাম্প্রতিক উবুন্টুতে (আমার ক্ষেত্রে 12.04), "সেগমেন্টেশন ফল্ট (কোর ডাম্পড)" মুদ্রণ করা সম্ভব, তবে আপনি কোনওরকম প্রত্যাশা করতে পারেন এমন কোনও মূল ফাইল প্রস্তুত করা হয়নি (উদাহরণস্বরূপ স্থানীয়ভাবে সংকলিত প্রোগ্রামের জন্য)।

যদি আপনার কোনও মূল ফাইলের আকার 0 হয় তবে আপনি এটি করতে পারেন না ulimit -c unlimited- এটি উবুন্টুতে ডিফল্ট। সাধারণত যে দমন হবে "(কোর ডাম্প)", আপনার ভুল তোমাকে cluing কিন্তু উবুন্টু উপর, corefiles জন্য বাঁশি বাজালাম হয় Apport (উবুন্টু এর ক্র্যাশ প্রতিবেদন সিস্টেম) মাধ্যমে /proc/sys/kernel/core_pattern, এবং এই বিভ্রান্তিকর বার্তা কারণ বলে মনে হয়।

যদি অ্যাপোর্টটি আবিষ্কার করে যে প্রোগ্রামটি ক্রশ হওয়ার জন্য রিপোর্ট করা উচিত নয় (যা আপনি ঘটতে দেখছেন /var/log/apport.log) তবে এটি সিডাব্লুডিতে একটি মূল ফাইল রাখার ডিফল্ট কার্নেল আচরণ অনুকরণে ফিরে আসে (এটি স্ক্রিপ্টে সম্পন্ন হয়) /usr/share/apport/apport)। এর মধ্যে উলিমিটকে সম্মান জানানো অন্তর্ভুক্ত রয়েছে, এক্ষেত্রে এটি কিছুই করে না। তবে (আমি ধরে নিই) যতক্ষণ না কার্নেলের সাথে সম্পর্কিত, একটি কোরফিল উত্পন্ন হয়েছিল (এবং এটির জন্য পাইপ করা হয়েছিল), সুতরাং বার্তাটি "সেগমেন্টেশন ফল্ট (কোর ডাম্পড)"।

শেষ পর্যন্ত উলামিট সেট করতে ভুলে যাওয়ার জন্য পেব্যাক্যাক, তবে বিভ্রান্তিমূলক বার্তাটি আমাকে ভেবেছিল যে আমি কিছুক্ষণের জন্য পাগল হয়ে যাচ্ছি, ভেবে ভেবেছিলাম যে আমার কোরফিলগুলি কী খাচ্ছে।

(এছাড়াও, সাধারণভাবে, মূল (5) ম্যানুয়াল পৃষ্ঠা - man 5 core- যেখানে আপনার মূল ফাইলটি শেষ হয় এবং এটি লিখিত নাও হতে পারে তার জন্য একটি ভাল রেফারেন্স)


4
আপনাকে অনেক ধন্যবাদ - আমি খুব একই সমস্যার মধ্যে দৌড়েছি। বিটিডব্লিউ, উবুন্টু ১৪.০৪ আপনার বর্ণিতটির মতো একই আচরণ প্রদর্শন করে।
মাল্টে স্কোরুপা,

5
আমার উবুন্টু ইনস্টল (14.04 সংশোধিত) এ, চালানোর মাধ্যমে এর জন্য একটি সহজ অস্থায়ী কাজ আছে sudo service apport stop--- আমি দৌড়ানোর পরে, এটি /proc/sys/kernel/core_patternএপারপোর্ট পাইপ থেকে কেবল পরিবর্তিত হয়েছে corecore_patternঅস্থায়ীভাবে ঠিক করার জন্য অ্যাপপোর্ট যথেষ্ট স্মার্ট , আমি মনে করি।
প্যাট্রিক কলিন্স

6
"ulimit -c আনলিমিটেড" হুবহু আমার যা প্রয়োজন - ধন্যবাদ!
ডেভ সি

4
আমি প্রতিটি প্রযোজ্য উত্তর এবং প্রতিটি উম্মিত আদেশের পরে প্রতিটি মন্তব্যে প্রতিটি অবস্থান চেষ্টা করেছি, তবে এখনও আমার উবুন্টুতে 16.04 এলটিএস-তে কোথাও একটি মূল ফাইল খুঁজে পাচ্ছি না ...
নাগেভ

2
পছন্দ করুন এটি আইএমওর দরিদ্র ইউএক্স নকশা। সিস্টেমটিকে কেবল পথ মুদ্রণ করা উচিত, বা কোনও বার্তা তৈরি না করা থাকলে একেবারে মুদ্রণ করা উচিত। আমি আমার নিজের উত্তর যুক্ত করব, কখন বা আমি আরও তদন্ত করার সুযোগ পেলে।
নাগেভ

80

সিস্টেমড চালু হওয়ার সাথে সাথে আরও একটি দৃশ্য রয়েছে। ডিফল্টরূপে systemd systemd-coredumpctlকমান্ডের সাহায্যে অ্যাক্সেসযোগ্য হয়ে জার্নালে কোর ডাম্প সংরক্ষণ করবে । কোর_প্যাটার্ন-ফাইলে সংজ্ঞায়িত:

$ cat /proc/sys/kernel/core_pattern 
|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e

এই আচরণটি একটি সাধারণ "হ্যাক" দিয়ে অক্ষম করা যেতে পারে:

$ ln -s /dev/null /etc/sysctl.d/50-coredump.conf
$ sysctl -w kernel.core_pattern=core      # or just reboot

সর্বদা হিসাবে, কোর ডাম্পগুলির আকারটি ডাম্প করা হচ্ছে এমন কোরের আকারের তুলনায় সমান বা তার বেশি হতে হবে, উদাহরণস্বরূপ ulimit -c unlimited


"হ্যাক" আমার পক্ষে কাজ করেনি (পুনরায় চালু করার পরেও)। আমি আর্চ লিনাক্স চালাচ্ছি এবং আমি ইতিমধ্যে চালিয়েছি ulimit -c unlimited
gsingh2011

@ gsingh2011 এটি পুরানো হতে পারে। আমি আরচ আর চালাচ্ছি না তাই এই দিনগুলিতে এটি কাজ করা উচিত কিনা তা আমি বলতে পারি না। যদি আপনি এটি নির্ধারণ করেন তবে নির্দ্বিধায় আমাকে / আমাদের সাথে একটি নতুন মন্তব্য আপডেট করুন।
টিমাস

5
@ gsingh2011 এর 50-coredump.confপরিবর্তে চেষ্টা করুন coredump.conf। এটি ওভাররাইড করা উচিত /lib/sysctl.d/50-coredump.conf। ডিফল্টটি পুনরুদ্ধার করা যেতে পারেsysctl -w kernel.core_pattern=core
লেকেনস্টেইন

এটি কাজ করার জন্য আমাকে অ্যাপপোর্টটি বন্ধ করতে হয়েছিলsudo service apport stop
rahul003

51

উবুন্টু 16.04 এলটিএসের অধীনে একটি কোর ডাম্প পাওয়ার নির্দেশাবলী রচনা :

  1. @Jtn তার উত্তর উল্লেখিত হয়েছে, উবুন্টু প্রতিনিধিদের ক্র্যাশের প্রদর্শন apport , যেটা ঘুরে ফিরে ডাম্প লিখতে কারণ প্রোগ্রাম একটি ইনস্টল প্যাকেজ নয় রাজি।পরিবর্তন করার আগে

  2. সমস্যার প্রতিকারের জন্য, আমাদের নিশ্চিত করা দরকার যে অ্যাপপোর্ট নন-প্যাকেজ প্রোগ্রামগুলির জন্য কোর ডাম্প ফাইলগুলিও লিখেছেন । এটি করতে, নিম্নলিখিত বিষয়বস্তুগুলির সাথে con / .config / apport / সেটিংস নামে একটি ফাইল তৈরি করুন :
    [main] unpackaged=true

  3. এখন আপনার প্রোগ্রামটি আবার ক্র্যাশ করুন এবং ফোল্ডারটিতে আপনার ক্র্যাশ ফাইলগুলি তৈরি হচ্ছে তা দেখুন: / var / ক্র্যাশ * * 10001 ক্র্যাশের মতো নাম । নোট করুন যে এই ফাইলগুলি সরাসরি জিডিবি দ্বারা পড়া যায় না ।পরিবর্তন করার পরে
  4. [ Ptionচ্ছিক ] gdb দ্বারা ডাম্পগুলি পঠনযোগ্য করে তোলার জন্য, নিম্নলিখিত কমান্ডটি চালান:

    apport-unpack <location_of_report> <target_directory>

তথ্যসূত্র: কোর_ডাম্প - ওরাকল ভিএম ভার্চুয়ালবক্স


3
উবুন্টুতে আমার জন্য এটিই একমাত্র সমাধান কাজ করেছে 18.04
গ্রেজ

কোন ব্যবহারকারী ~ / এর সাথে সম্পর্কিত? প্রক্রিয়াটি যদি রুট দ্বারা চালিত হয় তবে এর অর্থ কি /root/.config/apport/settings?
নিকলি

@ নিকোলি আমি বিশ্বাস করি যে এই প্রোগ্রামটি কার্যকর করা ব্যবহারকারী হওয়া উচিত। যদিও আমি নিশ্চিত নই।
অঙ্কুরক্র

12

আমি নিম্নলিখিত দুটি সম্ভাবনা সম্পর্কে ভাবতে পারি:

  1. অন্যরা ইতিমধ্যে উল্লেখ করেছে, প্রোগ্রাম সম্ভবত chdir()। প্রোগ্রামটি পরিচালনা করা ব্যবহারকারীকে যে ডিরেক্টরিতে এটি chdir()সম্পাদিত হয়েছে তাতে লেখার অনুমতি রয়েছে ? যদি তা না হয় তবে এটি কোর ডাম্প তৈরি করতে পারে না।

  2. কিছু অদ্ভুত কারণে কোর ডাম্পটির নামকরণ করা হয়নি core.*আপনি এটি পরীক্ষা করতে পারেন /proc/sys/kernel/core_pattern। এছাড়াও, আপনি যে ফাইন্ড কমান্ডটির নাম দিয়েছেন সেটি কোনও সাধারণ কোর ডাম্প খুঁজে পাবে না। আপনার ব্যবহার করা উচিত find / -name "*core.*", যেমন করডাম্পটির সাধারণ নামcore.$PID


এখানে আমার প্যাটার্নটি দেওয়া হয়েছে - এর অর্থ কি কোর ফাইলটির নামকরণ করা হয়েছে কোরি.পিডের পরিবর্তে "PID.signal.userid" এর মতো কিছু ??? $ বিড়াল / proc / sys / কার্নেল / কোর_প্যাটার্ন / usr / lib / hookCCpp / var / char / abrt% p% s% u
ওয়েবমালাল.আর

9

যদি আপনি বাইনারিগুলি RHELব্যবহারের সময় এবং ব্যবহারের জন্য মূল ডাম্পগুলি অনুপস্থিত থাকেন তবে abrtতা নিশ্চিত করুন/etc/abrt/abrt-action-save-package-data.conf

রয়েছে

ProcessUnpackaged = yes

এটি বাইনারিগুলির জন্য ক্র্যাশ প্রতিবেদন তৈরি করতে সক্ষম করে (কোর ডাম্প সহ) যা ইনস্টল করা প্যাকেজগুলির অংশ নয় (যেমন স্থানীয়ভাবে নির্মিত)।


6

ফেডোরা 25 এর জন্য আমি এখানে মূল ফাইলটি খুঁজে পেতে পারি

/var/spool/abrt/ccpp-2017-02-16-16:36:51-2974/coredump

যেখানে ccpp-2017-02-16-16:36:51-2974" is pattern "%s %c %p %u %g %t %P %`/ proc / sys / কার্নেল / কোর_প্যাটার্ন অনুসারে


5

ডাব্লুএসএল-এ আমার প্রচেষ্টা ব্যর্থ হয়েছে।

লিনাক্সের জন্য উইন্ডোজ সাবসিস্টেমে চলমানদের জন্য (ডাব্লুএসএল) কোর ডাম্প ফাইল হারিয়ে যাওয়ার জন্য এই মুহূর্তে একটি মুক্ত সমস্যা বলে মনে হচ্ছে।

মন্তব্যগুলি ইঙ্গিত করে যে

এটি একটি জ্ঞাত সমস্যা যা আমরা সচেতন, এটি এমন কিছু যা আমরা তদন্ত করছি।

গিথুব ইস্যু

উইন্ডোজ বিকাশকারী প্রতিক্রিয়া


5

উবুন্টু 18.04-এ, কোনও মূল ফাইল পাওয়ার সর্বাধিক সহজ উপায়টি হল অ্যাপোর্ট পরিষেবা বন্ধ করার জন্য নীচের কমান্ডটি ইনপুট করা।

sudo service apport stop

তারপরে অ্যাপ্লিকেশনটি পুনরায় চালু করুন, আপনি বর্তমান ডিরেক্টরিতে ডাম্প ফাইল পাবেন।


3

আমি লিনাক্স মিন্ট 19 (উবুন্টু 18 ভিত্তিক) এ আছি। আমি coredumpবর্তমান ফোল্ডারে ফাইল রাখতে চেয়েছি । আমাকে দুটি জিনিস করতে হয়েছিল:

  1. পরিবর্তন /proc/sys/kernel/core_pattern(দ্বারা # echo "core.%p.%s.%c.%d.%P > /proc/sys/kernel/core_patternবা দ্বারা)# sysctl -w kernel.core_pattern=core.%p.%s.%c.%d.%P)
  2. কোর ফাইল আকারের দ্বারা সীমা বাড়ানো $ ulimit -c unlimited

এটি ইতিমধ্যে উত্তরে লেখা ছিল, তবে আমি সংক্ষেপে সংক্ষেপে লিখতে লিখেছি। আকর্ষণীয়ভাবে সীমা পরিবর্তন করার জন্য মূল সুবিধার দরকার ছিল না ( /ubuntu/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user non-- রুট কেবল সীমাটি হ্রাস করতে পারে, সুতরাং এটি অপ্রত্যাশিত ছিল - এটি সম্পর্কে মন্তব্য স্বাগত।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.