c - কোর ডাম্প, কিন্তু কোর ফাইল বর্তমান ডিরেক্টরি নয়?



linux coredump (6)

Fedora25 জন্য, আমি মূল ফাইল খুঁজে পেতে পারে

/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 / kernel / core_pattern 'অনুযায়ী

https://src-bin.com

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

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

ulimit -c unlimited 
ulimit -a 

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


Answer #1

WSL আমার প্রচেষ্টা ব্যর্থ হয়েছে।

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

মন্তব্য যে ইঙ্গিত

এটি একটি পরিচিত বিষয় যা আমরা সচেতন, এটি এমন কিছু যা আমরা তদন্ত করছি।

জিতুব ইস্যু

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


Answer #2

পড়ুন /usr/src/linux/Documentation/sysctl/kernel.txt

[/ proc / sys / kernel /] core_pattern একটি কোর ডাম্পফিল প্যাটার্ন নাম উল্লেখ করতে ব্যবহৃত হয়।

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

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

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


Answer #3

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

রয়েছে

ProcessUnpackaged = yes

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


Answer #4

systemd আরম্ভ সঙ্গে, অন্য দৃশ্যকল্প পাশাপাশি আছে। systemd-coredumpctl কমান্ডের মাধ্যমে অ্যাক্সেসযোগ্য হওয়ার ফলে ডিফল্ট systemd দ্বারা তার জার্নালে কোর ডাম্প সংরক্ষণ করা হবে। Core_pattern-ফাইলে সংজ্ঞায়িত করা হয়েছে:

$ 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


Answer #5

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

  1. @ জেটিএন তার জবাবে উল্লেখ করেছে, উবুন্টু অপপ্রচারে ক্র্যাশ প্রদর্শনের প্রতিনিধিত্ব করে, যা পরিবর্তে ডাম্প লিখতে অস্বীকার করে কারণ প্রোগ্রামটি ইনস্টল করা প্যাকেজ নয়।

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

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

    apport-unpack <location_of_report> <target_directory>

রেফারেন্স: কোর_ডম্প - ওরাকল ভিএম ভার্চুয়ালবক্স





coredump