লিনাক্সে নন-ব্লকিং কোর ডাম্প?


24

আমি লিনাক্সে চলমান প্রক্রিয়াটির একটি অ-ইন্ট্রিসিভ কোরডাম্প নেওয়ার একটি উপায় খুঁজছি।

আমি জিডিবি'র সাথে পরিচিত gcore, তবে এটি কেবল তখনই চালানো যেতে পারে যখন gdbপ্রক্রিয়াটির সাথে সংযুক্ত থাকে এবং এটি ডিবাগিংয়ের জন্য বন্ধ হয়ে যায়। একটি বড় কোর ডাম্পের জন্য এর অর্থ হতে পারে যে কয়েক সেকেন্ড বা কয়েক মিনিট বাধা কার্যকর হয়েছে।

কোন অবরুদ্ধ বিকল্প আছে?

লিনাক্স অনুলিপি মেমরির অনুলিপি সমর্থন করে, যা এটি fork()ছাড়া সমর্থন করার উপর নির্ভর করে exec()। সুতরাং আমি কার্নেল-স্তরের এমন কিছু নিয়ে ভাবছি যেখানে কর্নেল প্রক্রিয়া পৃষ্ঠার টেবিলগুলি ডাম্প করা হচ্ছে এমন একটি অনুলিপি-অন-লেখার স্ন্যাপশট নিয়ে যায়, তারপরে মূল প্রক্রিয়াটি চলতে থাকাকালীন মূলটি লেখেন।

আমি নিশ্চিত যে আমি যখন gdbবাধ্য fork()হয়ে পিতা-মাতার সাথে আনন্দের wait()সাথে চালিত হত , তখন বাবা-মায়েরা অবসন্ন হওয়ার পরে বাচ্চা ফসল কাটাতে বাধ্য করতাম pretty যদিও এটি অগোছালো, তবুও সংক্ষিপ্তগুলি হলেও পিতামাতার প্রক্রিয়ার দুটি বাধা প্রয়োজন।

নিশ্চয়ই এর আগে কারও দরকার ছিল?


আমি দুঃখিত যে আমি এই দুর্দান্ত প্রশ্নের জন্য কেবল একটি একক উপস্থাপনা দিতে পারি।
পিটার বলেছেন মোনিকা

দুর্দান্ত প্রশ্ন এবং আমি একটার জন্য উত্তরটির অপেক্ষায় রয়েছি। আমার কাছ থেকে +1
থানাসিস্ক

1
কী 1) জিডিবি দিয়ে প্রক্রিয়া সংযুক্ত 2) এটি একটি "কল ফর্ক" কমান্ড দ্বারা কাঁটাযুক্ত করা যাক 3) শিশু প্রক্রিয়াটির মূলটি ডাম্পিং করা 4) মৃত সন্তানের পিতামাতার দ্বারা অপেক্ষা করা দেওয়া (অন্য "কল ওয়েট 4") 5 ) প্রক্রিয়া থেকে বিচ্ছিন্ন 6) স্বয়ংক্রিয়করণ 1-5? জিডিবি সাধারণ সিস্টেপসট্রেস () সিস্টেম কলগুলি ব্যবহার করে, এটি জিডিবি থেকে সম্পূর্ণ স্বাধীন কোনও জটিল সি সরঞ্জাম নয়।
পিটার বলেছেন মোনিকা

1
ভার্চুয়াল মেশিনে আপনি স্ন্যাপশট নিতে পারেন এবং বিশ্লেষণ করার জন্য এটি একটি ক্লোন হিসাবে আনতে পারেন। : সম্ভবত এখানে তালিকাভুক্ত সরঞ্জামগুলির মধ্যে একটি আপনাকে সাহায্য করবে cyberciti.biz/programming/linux-memory-forensics-analysis-tools
জিওভান্নি Tirloni

1
আপনি বাচ্চা প্রক্রিয়াটিও কাঁটাচামচ করে দিয়ে দ্বিতীয় প্রকারের বাধা এড়াতে পারেন এবং তারপরে প্রস্থান করতে পারেন। তারপরে পিতামাতার প্রক্রিয়াটি তাত্ক্ষণিকভাবে সন্তানের জন্য অপেক্ষা করতে পারে এবং তারপরে চালিয়ে যেতে পারে, যখন দাদু-পিতা মাতাল হয়।
ক্যাস্পার্ড

উত্তর:


1

গুগল কোরডাম্পার মনে পড়বে । এটি প্রক্রিয়াটির ঠিকানা জায়গার অনুলিপি অনুলিপি তৈরি করে, WritCoreDump দেখুন () ("নোটগুলি দেখুন")।


এটি দুর্দান্ত উপকারী মনে হচ্ছে! আমি অবাক হই যে অন্তর্নিহিত কৌশলটি কী ব্যবহৃত হয়। সম্ভবত এটি প্রক্রিয়াটিকে অবিচ্ছিন্ন করে তোলে, তবে কাঁটাচামক ছাড়াই এবং এমনভাবে স্ট্যাক (গুলি) -কে প্রভাবিত করে না এমনভাবে CoW স্ন্যাপশট তৈরি করা চ্যালেঞ্জক হবে। আমাকে কোডটি একবার দেখে নিতে হবে। দুর্দান্ত টিপ।
ক্রেগ রিঞ্জার

দেখে মনে হচ্ছে এটি কেবল প্রক্রিয়াধীন, দুর্ভাগ্যক্রমে, এবং gdb বা অনুরূপের মাধ্যমে আহ্বান করা যায় না কারণ এটির নিজের স্বরূপ প্রয়োজন। সুতরাং এটি কিছুটা উইন্ডোজের অধীনে ডিবাগেল্প ডিএলএল এর মতো, একটি ব্লক-না-করা ব্লগারের মতো, তবে এখনও খুব সহজ দেখায়। আমার ধারণা, জিডিবি, বিচ্ছিন্নকরণ এবং প্রক্রিয়া সংকেত সহ একটি এলডিপ্রেলএড হুক এবং সিগন্যাল হ্যান্ডলারের সেটআপের মাধ্যমে ব্যবহার করা সম্ভব হবে তবে এটি বাস্তবে অশোধিত প্রোগ্রামগুলি ডাম্প করার জন্য ডিজাইন করা হয়েছে বলে মনে হচ্ছে না এবং এতে সমস্যাটি ভাগ হয়েছে যে কোনও প্রক্রিয়াজাতীয় ডাম্প সরঞ্জাম দ্বারা যে প্রক্রিয়াটি যথেষ্ট গণ্ডগোল করে ফেললে ডাম্প কাজ করবে না।
ক্রেগ রিঞ্জার

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