লিনাক্সে "ট্রাস-টি" এবং "ট্রাস-ইউ" এর সমান?


12

সেখানে কি একটি সমতুল্য হয় -Tএবং -Uবিকল্প trussসোলারিস ইউটিলিটি লিনাক্স আছে।

এগুলি হ'ল একটি সিস্টেম কল ( -T) বা লাইব্রেরি ফাংশন ( -U) নির্দিষ্ট করতে হবে যা ট্রেস অ্যাপ্লিকেশন দ্বারা কল করলে এটি বন্ধ হয়ে যায়।

অথবা, অন্যথায় বলেছিলেন, আমি কোনও প্রদত্ত সিস্টেম কল বা প্রদত্ত অংশীদারি লাইব্রেরি ফাংশন কল করার সাথে সাথে কোনও ট্রেস অ্যাপ্লিকেশন দ্বারা শুরু হওয়া কোনও প্রক্রিয়া (যেমন সাইনস্টপ দ্বারা হত্যা করা) বন্ধ করা চাই।

straceএবং ltraceলিনাক্সে সোলারিসের অনেকগুলি ফিচারসেট সরবরাহ করা হয়েছে trussতবে তারা এটি করছে বলে মনে হয় না।

এই ক্ষেত্রে:

truss -f -T open cmd

strace -f cmdপ্রক্রিয়াটি সম্পাদনকারী cmdবা এর বংশধরদের কোনও openসিস্টেম কল করলে এটি তত্ক্ষণাত বন্ধ করা হবে (এবং আমি পরে আমার সুবিধার্থে এটি পুনরায় শুরু করতে পারি) ব্যতীত এমনটি হবে Would

কিছু কিছু ক্ষেত্রে, আমি ব্যবহার করতে পারে gdb'র catch syscall, কিন্তু আমি যে একটি সমাধান সুবিধামত কাটাচামচ অনুসরণ কর এবং সব forked প্রসেসের জন্য এরকম চলতে থাকা ও পরও এরকম উপর রাখতে পারবেন না খুঁজছিলাম execveগুলি।

আমি মনে করি কিছু ইউটিলিটি একই ক্রিয়াকলাপতা প্রদান করে, এমনকী একটির (বা সেই একই ইউটিলিটির বিকল্পগুলি) কিছু সাইকেলের কিছু দূরবর্তী অবস্থানের মধ্যে একক-পদক্ষেপের অ্যাপ্লিকেশনগুলিতে যেমন হয় তবে আমার স্মৃতি আমাকে ব্যর্থ করে দেয়, আমি নিশ্চিতও হতে পারি না লিনাক্স এ ছিল।


1
সত্যিই আপনার প্রশ্নের উত্তর নয় তবে জিডিবির কাছে কাঁটাচামচ অনুসরণ করার জন্য কিছু বিকল্প রয়েছে, এটি কেবল একটি এক্সিকিউট বন্ধ করে দেয় না। এটি এখনও একবারে কেবল একটি প্রক্রিয়া করে, যদিও, যদি আপনি স্ট্রেসের মতো কার্যকারিতা সন্ধান করেন তবে সম্ভবত এটি একটি চুক্তি ব্রেকার, তবে আমি ভেবেছিলাম যে আমি কেবল এটির ক্ষেত্রে উল্লেখ করব।
ব্র্যাচলে

@ জোয়েলডাভিস, ধন্যবাদ এবং দেখে মনে হয় এটি এক্সিকিউট করার পরেও অনুসরণ করতে পারে, ( follow-exec-mode), আমি এটি নিয়ে পরীক্ষা নিরীক্ষা করছি। কঠোরভাবে প্রশ্নের উত্তর দেয় না, তবে আমার যা প্রয়োজন তার পক্ষে যথেষ্ট ভাল হতে পারে।
স্টাফেন চেজেলাস

যদি আমি আপনার প্রশ্নটি বুঝতে পারি যে আপনি কোনও নির্দিষ্ট সিগন্যাল না পাওয়া অবধি ট্রেস করার কোনও উপায় সন্ধান করছেন এবং তারপরে ট্রেসিং বন্ধ করুন, আপনি যে অ্যাপ্লিকেশনটি আবিষ্কার করছেন তা কোনওভাবে থামানো বা বন্ধ করতে হবে না, তাই না?
slm

@ এসএমএল, না, আমি চাইছি কোনও প্রদত্ত সিস্টেম কল করার সাথে সাথে একটি ট্রেসড অ্যাপ্লিকেশন দ্বারা শুরু হওয়া প্রক্রিয়াটি (যেমন সাইনস্টপ দ্বারা নিহত) বন্ধ করা উচিত। আমি সোলারিস trussম্যানপেজে একটি লিঙ্ক যুক্ত করেছি ।
স্টাফেন চেজেলাস

আমি সঠিকভাবে বুঝতে পেরেছি তা নিশ্চিত করুন। আপনি যখন কোনও প্রক্রিয়া নির্দিষ্ট সিস্টেমকল করেন তখন কোনও প্রক্রিয়া বন্ধ করার উপায় চান। এটা কি ঠিক?
স্পার্টিকস

উত্তর:


3

আমার জ্ঞানের সেরাটি দিয়ে এটি করা যায় না strace, ptraceঅভ্যন্তরীণভাবে ব্যবহৃত ফাংশনটি SIGSTOPবা SIGINTকলগুলিতে হয়।

সম্পাদনা করুন:

আমি এই সহজ সমাধানটি মিনিস্ট্রেসে in োকালাম , সুতরাং কোনও কোডিংয়ের প্রয়োজন নেই।

আমার প্রস্তাবিত সমাধান, যদি স্ট্রেসের সমস্ত কার্যকারিতা প্রয়োজন না হয় তবে মিনিস্ট্রাসটি সংশোধন করতে হবে - যা আমি এখানে পেয়েছি .০ লাইনের কোডে নিজেকে একটি স্ট্র্যাস লিখুন

একটি শট প্রোগ্রামে আপনি নিম্নলিখিত কোডের আগে দুটি লাইন যুক্ত করতে পারেন:

if (wait_for_syscall(child) != 0) break;

সুডোকোড:

if(syscall == SYS_write)
    do {
        char str[4];
        gets(str);  // waits until enter to continue    
    } while(0);

আমি এর কোনটিই পরীক্ষিত করি নি, এই চূড়ান্ত পদক্ষেপগুলি আপনার কাছে রয়েছে।


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

আপনাকে স্বাগতম! আমি বাস্তবায়নটি প্রসারিত করতে কিছুটা বুনো হয়েছি, সুতরাং আইডি এবং নাম দিয়ে সিস্কলটি উল্লেখ করা সম্ভব হবে। আবার ptrace নিয়ে খেলতে মজা পেয়েছিল।
ড্যানিয়েল ডব্লিউ। ক্রম্পটন

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