এটি কমান্ড স্ট্যাপ যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
stap - systemtap স্ক্রিপ্ট অনুবাদক/ড্রাইভার
সাইনোপিসিস
স্ট্যাপ [ বিকল্প ] ফাইল ফাইল [ যুক্তি ]
স্ট্যাপ [ বিকল্প ] - [ যুক্তি ]
স্ট্যাপ [ বিকল্প ] -e স্ক্রিপ্ট [ যুক্তি ]
স্ট্যাপ [ বিকল্প ] -l প্রোবের [ যুক্তি ]
স্ট্যাপ [ বিকল্প ] -L প্রোবের [ যুক্তি ]
স্ট্যাপ [ বিকল্প ] --ডাম্প-প্রোব-টাইপস
স্ট্যাপ [ বিকল্প ] --ডাম্প-প্রোব-উপানাৎ
স্ট্যাপ [ বিকল্প ] --ডাম্প-ফাংশন
বর্ণনাঃ
সার্জারির স্ট্যাপ প্রোগ্রামটি Systemtap টুলের ফ্রন্ট-এন্ড। এটি অনুসন্ধানের নির্দেশাবলী গ্রহণ করে
একটি সাধারণ ডোমেন-নির্দিষ্ট ভাষায় লেখা, সেই নির্দেশাবলী সি কোডে অনুবাদ করে,
এই C কোড কম্পাইল করে, এবং একটি চলমান লিনাক্স কার্নেল বা a-এ ফলস্বরূপ মডিউল লোড করে
DynInst ইউজার-স্পেস মিউটেটর, অনুরোধ করা সিস্টেম ট্রেস/প্রোব ফাংশন সম্পাদন করতে। আপনি
স্ট্যান্ডার্ড ইনপুট থেকে (ব্যবহার করুন - পরিবর্তে
FILENAME), অথবা কমান্ড লাইন থেকে (-e SCRIPT ব্যবহার করে)। এটি না হওয়া পর্যন্ত প্রোগ্রামটি চলে
ব্যবহারকারীর দ্বারা বাধাপ্রাপ্ত, অথবা যদি স্ক্রিপ্ট স্বেচ্ছায় আমন্ত্রণ জানায় প্রস্থান () ফাংশন, বা দ্বারা
পর্যাপ্ত সংখ্যক নরম ত্রুটি।
ভাষা, যা বর্ণনা করা হয় স্ক্রিপ্ট ভাষা নীচের বিভাগটি কঠোরভাবে টাইপ করা হয়েছে,
অভিব্যক্তিপূর্ণ, ঘোষণা মুক্ত, পদ্ধতিগত, প্রোটোটাইপিং-বান্ধব, এবং দ্বারা অনুপ্রাণিত অজস্র এবং C.
এটি সোর্স কোড পয়েন্ট বা সিস্টেমের ইভেন্টগুলিকে হ্যান্ডলারদের সাথে যুক্ত করার অনুমতি দেয়, যা
সাবরুটিনগুলি সিঙ্ক্রোনাসভাবে কার্যকর করা হয়। এটি ধারণাগতভাবে কিছুটা অনুরূপ
তে "ব্রেকপয়েন্ট কমান্ড তালিকা" জিডিবি ডিবাগার
বিকল্প
systemtap অনুবাদক নিম্নলিখিত বিকল্পগুলি সমর্থন করে। অন্য কোনো বিকল্প একটি তালিকা প্রিন্ট করে
সমর্থিত বিকল্পগুলির। বিকল্পগুলি যথারীতি কমান্ড লাইনে দেওয়া যেতে পারে। ফাইল হলে
$SYSTEMTAP_DIR/rc বিদ্যমান, বিকল্পগুলিও সেখান থেকে লোড করা হয় এবং প্রথমে ব্যাখ্যা করা হয়।
(সেট না থাকলে $SYSTEMTAP_DIR ডিফল্ট $HOME/.systemtap.)
- প্রোবের ভাষা ইনপুট হিসাবে প্রদত্ত FILENAME-এর পরিবর্তে স্ট্যান্ডার্ড ইনপুট ব্যবহার করুন, যদি না -e
স্ক্রিপ্ট দেওয়া আছে।
-h --help
সাহায্য বার্তা দেখান.
-V --সংস্করণ
সংস্করণ বার্তা দেখান।
-p NUM টি NUM পাসের পরে থামুন। পাসের সংখ্যা 1-5: পার্স, বিস্তৃত, অনুবাদ,
কম্পাইল, চালান। দেখুন প্রসেসিং বিস্তারিত জানার জন্য বিভাগ।
-v সমস্ত পাসের জন্য শব্দশক্তি বাড়ান। তথ্যপূর্ণ একটি বড় ভলিউম উত্পাদন (?)
আউটপুট প্রতিবার বিকল্প পুনরাবৃত্তি।
--ভিপি এবিসিডিই
প্রতি-পাস ভিত্তিতে verbosity বাড়ান। উদাহরণস্বরূপ, "--vp 002" এর 2 ইউনিট যোগ করে
শুধুমাত্র 3 পাস করতে verbosity. "-v --vp 00004" সংমিশ্রণটি 1 ইউনিট ভারবোসিটি যোগ করে
সব পাসের জন্য, এবং পাস 4-এর জন্য আরও 5টি।
-k সমস্ত প্রক্রিয়াকরণের পরে অস্থায়ী ডিরেক্টরি রাখুন। এটি করার জন্য দরকারী হতে পারে
জেনারেট করা সি কোড পরীক্ষা করুন, অথবা কম্পাইল করা কার্নেল অবজেক্ট পুনরায় ব্যবহার করতে।
-g গুরু মোড। এমবেডেড সি-এর মতো অনিরাপদ বিশেষজ্ঞ-স্তরের নির্মাণের পার্সিং সক্ষম করুন।
-P প্রলোগ-সার্চিং মোড। এটি --প্রলোগ-অনুসন্ধান=সর্বদা সমতুল্য।
ফাংশনের জন্য ভুল ডিবাগিং তথ্যের চারপাশে কাজ করতে হিউরিস্টিকস সক্রিয় করুন
প্যারামিটার $ প্রসঙ্গ ভেরিয়েবল।
-u অঅপ্টিমাইজড মোড। সময় অব্যবহৃত কোড এলিশন এবং অন্যান্য অনেক অপ্টিমাইজেশান নিষ্ক্রিয় করুন
বিস্তারিত/অনুবাদ।
-w চাপা সতর্কতা মোড. সমস্ত সতর্কতা বার্তা নিষ্ক্রিয় করে।
-W সমস্ত সতর্কতাকে ত্রুটি হিসাবে বিবেচনা করুন।
-b কার্নেল-টু-ব্যবহারকারী ডেটা স্থানান্তরের জন্য বাল্ক মোড (percpu ফাইল) ব্যবহার করুন। ব্যবহার স্ট্যাপ-মার্জ
পরে তাদের একসাথে মাল্টিপ্লেক্স করার প্রোগ্রাম।
-t কতবার প্রোব চালানো হয় এবং গড় পরিমাণের উপর সময়ের তথ্য সংগ্রহ করুন
প্রতিটি প্রোব-পয়েন্টে ব্যয় করা সময়। এছাড়াও প্রতিটি প্রোব-পয়েন্টের জন্য ডেরিভেশন দেখায়।
-sNUM টি কার্নেল থেকে ব্যবহারকারীর ডেটা স্থানান্তরের জন্য NUM মেগাবাইট বাফার ব্যবহার করুন। একটি মাল্টিপ্রসেসর ইন
বাল্ক মোড, এটি প্রতি-প্রসেসরের পরিমাণ।
-I থেকে DIR প্রদত্ত ডিরেক্টরিটি ট্যাপসেট অনুসন্ধান ডিরেক্টরিতে যুক্ত করুন। এর বর্ণনা দেখুন
বিস্তারিত জানার জন্য 2 পাস করুন।
-D NAME=VALUE
মডিউল মেকফাইলে প্রদত্ত সি প্রিপ্রসেসর নির্দেশিকা যোগ করুন। এগুলো ব্যবহার করা যেতে পারে
নীচে বর্ণিত সীমা পরামিতি ওভাররাইড করতে।
-B NAME=VALUE
কার্নেল মডিউল বিল্ডের মেক ইনভোকেশনে প্রদত্ত মেক নির্দেশিকা যোগ করুন। এইগুলো
kconfig অপশন যোগ বা ওভাররাইড করতে ব্যবহার করা যেতে পারে।
-a ARCH দ্বারা
প্রদত্ত লক্ষ্য আর্কিটেকচারের জন্য একটি ক্রস-সংকলন মোড ব্যবহার করুন। এই প্রয়োজন
ক্রস-কম্পাইলার এবং কার্নেল বিল্ড ট্রিতে অ্যাক্সেস এবং এর সাথে যায় -B
CROSS_COMPILE=arch-tool-prefix- এবং -r /বিল্ড/গাছ অপশন।
--মডিনফো NAME=VALUE
জেনারেট করা মডিউলে একটি MODULE_INFO ম্যাক্রো কল হিসাবে নাম/মান জোড়া যোগ করুন। এই
কার্নেলের মধ্যে বিভিন্ন মডিউল-সম্পর্কিত চেকগুলি জানাতে বা ওভাররাইড করতে উপযোগী হতে পারে।
-G NAME=VALUE
যখন স্ট্যাপ্রুন আহ্বান করা হয় তখন গ্লোবাল ভেরিয়েবল NAME-এর মান VALUE এ সেট করে। এই
স্ক্রিপ্ট/ট্যাপসেটে বিশ্বব্যাপী ঘোষিত স্কেলার ভেরিয়েবলের ক্ষেত্রে প্রযোজ্য।
-R থেকে DIR প্রদত্ত ডিরেক্টরির মধ্যে systemtap রানটাইম উত্স সন্ধান করুন।
-r / ডিআইআর
প্রদত্ত বিল্ড ট্রিতে কার্নেলের জন্য তৈরি করুন। এর সাথেও সেট করা যায় SYSTEMTAP_RELEASE
পরিবেশ সূচক.
-r মুক্তি
বিল্ড ট্রিতে কার্নেলের জন্য বিল্ড করুন /lib/modules/RELEASE/build. সাথেও সেট করা যায়
দ্য SYSTEMTAP_RELEASE পরিবেশ সূচক.
-m মডিউল
উৎপন্ন কার্নেল অবজেক্ট মডিউলের জন্য প্রদত্ত নামটি ব্যবহার করুন, একটি অনন্যের পরিবর্তে
এলোমেলো নাম। উৎপন্ন কার্নেল অবজেক্ট মডিউল কারেন্টে কপি করা হয়
ডিরেক্টরি.
-d মডিউল
কার্নেল অবজেক্ট মডিউলে প্রদত্ত মডিউলের জন্য প্রতীক/আনওয়াইন্ড তথ্য যোগ করুন।
এটি সেই মডিউল/প্রোগ্রাম থেকে সিম্বলিক ট্রেসব্যাক সক্ষম করতে পারে, এমনকি যদি তারা করেও
তাদের মধ্যে একটি সুস্পষ্ট তদন্ত স্থাপন করা হয় না.
--ldd ldd দ্বারা সন্দেহ করা সমস্ত শেয়ার করা লাইব্রেরির জন্য প্রতীক/আনওয়াইন্ড তথ্য যোগ করুন
ইউজার-স্পেস বাইনারি প্রোব বা -d বিকল্পের সাথে তালিকাভুক্ত করার জন্য প্রয়োজনীয়।
সতর্কতা: এটি প্রোব মডিউলগুলিকে যথেষ্ট বড় করে তুলতে পারে।
--সমস্ত-মডিউল
প্রতিটি কার্নেল মডিউলের জন্য "-dkernel" এবং একটি "-d" নির্দিষ্ট করার সমতুল্য
বর্তমানে লোড করা হয়েছে। সতর্কতা: এটি প্রোব মডিউলগুলিকে যথেষ্ট বড় করে তুলতে পারে।
-o ফাইল
নামযুক্ত ফাইলে স্ট্যান্ডার্ড আউটপুট পাঠান। বাল্ক মোডে, percpu ফাইলগুলি দিয়ে শুরু হবে
FILE_ (-F সহ FILE_cpu) cpu নম্বর অনুসরণ করে৷ এই সমর্থন করে strftime(3)
FILE এর জন্য বিন্যাস।
-c সিএমডি প্রোব শুরু করুন, CMD চালান এবং CMD শেষ হলে প্রস্থান করুন। এর প্রভাবও রয়েছে
টার্গেট() কমান্ডের পিড সেট করে রান করা হয়েছে।
-x পিআইডি PID-তে লক্ষ্য() সেট করে। এটি একটি নির্দিষ্ট ফিল্টারে স্ক্রিপ্ট লেখার অনুমতি দেয়
প্রক্রিয়া স্ক্রিপ্টগুলি PID-এর জীবনকাল থেকে স্বাধীনভাবে চলে।
-e স্ক্রিপ্ট
কমান্ড লাইনে প্রদত্ত স্ক্রিপ্টটি চালান।
-E স্ক্রিপ্ট
প্রদত্ত স্ক্রিপ্টটি নির্দিষ্টভাবে চালান। এই স্ক্রিপ্ট প্রধান স্ক্রিপ্ট ছাড়াও চালানো হয়
নির্দিষ্ট, মাধ্যমে -e, বা একটি স্ক্রিপ্ট ফাইল হিসাবে. এই বিকল্পটি চালানোর জন্য পুনরাবৃত্তি করা যেতে পারে
একাধিক স্ক্রিপ্ট, এবং তালিকা মোডে ব্যবহার করা যেতে পারে (-l/-L)।
-l প্রোবের
একটি প্রোব স্ক্রিপ্ট চালানোর পরিবর্তে, শুধুমাত্র সমস্ত উপলব্ধ প্রোব পয়েন্টগুলিকে তালিকাভুক্ত করুন
প্রদত্ত একক প্রোব পয়েন্ট। প্যাটার্ন ওয়াইল্ডকার্ড এবং উপনাম অন্তর্ভুক্ত হতে পারে, কিন্তু
একাধিক প্রোব পয়েন্ট কমা দ্বারা পৃথক করা হয় না। প্রক্রিয়া ফলাফল কোড নির্দেশ করবে
কোন মিল না থাকলে ব্যর্থতা।
-L প্রোবের
"-l" এর মতো, কিন্তু প্রোব পয়েন্ট এবং স্ক্রিপ্ট-স্তরের স্থানীয় ভেরিয়েবলের তালিকা করুন।
-F -o বিকল্প ছাড়া, মডিউল লোড করুন এবং প্রোব শুরু করুন, তারপর মডিউল থেকে বিচ্ছিন্ন করুন
প্রোব চলমান রেখে. -o বিকল্পের সাথে, একটি ডেমন হিসাবে পটভূমিতে staprun চালান
এবং তার পিড দেখান।
-S আকার[,N]
আউটপুট ফাইলের সর্বোচ্চ আকার এবং আউটপুট ফাইলের সর্বাধিক সংখ্যা সেট করে। যদি
আউটপুট ফাইলের আকার অতিক্রম করবে আয়তন , systemtap আউটপুট ফাইলে সুইচ করে
পরবর্তী ফাইল। এবং যদি আউটপুট ফাইলের সংখ্যা অতিক্রম করে N , systemtap সরিয়ে দেয়
প্রাচীনতম আউটপুট ফাইল। আপনি দ্বিতীয় যুক্তি বাদ দিতে পারেন.
--বাদ-বাদ
অমীমাংসিত বা রান-টাইম-অ্যাক্সেসযোগ্য প্রসঙ্গ ভেরিয়েবল উপেক্ষা করুন এবং এর সাথে বিকল্প করুন
0, ত্রুটি ছাড়া.
--প্রোলোগ-অনুসন্ধান[=কখন]
প্রলোগ-সার্চিং মোড। ভুল ডিবাগিং এ কাজ করতে হিউরিস্টিকস সক্রিয় করুন
ফাংশন প্যারামিটার $প্রসঙ্গ ভেরিয়েবলের জন্য তথ্য। কখন হতে পারে
"কখনই না", "সর্বদা", বা "অটো" (অর্থাৎ হিউরিস্টিক দ্বারা সক্ষম)। WHEN অনুপস্থিত হলে, তারপর
"সর্বদা" ধরে নেওয়া হয়। যদি বিকল্পটি অনুপস্থিত থাকে তবে "অটো" ধরে নেওয়া হয়।
--দমন-হ্যান্ডলার-ত্রুটি
সমস্ত প্রোব হ্যান্ডলারকে এইরকম কিছুতে মোড়ানো
চেষ্টা করুন { ... } ধর {পরের}
ব্লক, যার কারণে যেকোন রানটাইম ত্রুটি শান্তভাবে দমন করা হয়। চাপা ত্রুটি
বিরুদ্ধে গণনা করবেন না MAXERRORS সীমা এই মোডে, দ সর্বোচ্চ এড়িয়ে যাওয়া সীমা হয়
এছাড়াও চাপা, যাতে অনেক ত্রুটি এবং এড়িয়ে যাওয়া প্রোব জমা হতে পারে
স্ক্রিপ্টের রানটাইম। কোনো সামগ্রিক গণনা এখনও শাটডাউন এ রিপোর্ট করা হবে.
--উপযুক্ত সংস্করণ
সাম্প্রতিক স্ক্রিপ্ট ভাষা বা ট্যাপসেট পরিবর্তনগুলি দমন করুন যা দেওয়া সাথে সামঞ্জস্যপূর্ণ নয়
সিস্টেমট্যাপের পুরোনো সংস্করণ। অনেক পুরানো সিস্টেমট্যাপ স্ক্রিপ্ট হলে এটি কার্যকর হতে পারে
চালাতে ব্যর্থ হয়। আরও বিশদ বিবরণের জন্য বর্জন বিভাগটি দেখুন।
--চেক-সংস্করণ
এই বিকল্পটি সক্রিয় স্ক্রিপ্টের কোনো গঠন আছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়
systemtap সংস্করণ নির্দিষ্ট। আরও বিশদ বিবরণের জন্য বর্জন বিভাগটি দেখুন।
--ক্লিন ক্যাশে
এই বিকল্পটি ক্যাশে ডিরেক্টরি থেকে পুরানো এন্ট্রি ছাঁটাই করে। এটি সাধারণত করা হয়
সফল রানের পরে স্বয়ংক্রিয়ভাবে, কিন্তু এই বিকল্পটি ক্লিনআপ ট্রিগার করবে
ম্যানুয়ালি এবং তারপর প্রস্থান করুন। ক্যাশে সম্পর্কে আরো বিস্তারিত জানার জন্য CACHING বিভাগটি দেখুন
সীমা।
--রঙ[=কখন], --রঙ[=কখন]
এই বিকল্পটি ত্রুটি বার্তার রঙ নিয়ন্ত্রণ করে। কখন হতে পারে "কখনই না",
"সর্বদা", বা "স্বয়ংক্রিয়" (অর্থাৎ শুধুমাত্র টার্মিনালে থাকলেই সক্ষম করুন)। WHEN অনুপস্থিত হলে, তারপর
"সর্বদা" ধরে নেওয়া হয়। যদি বিকল্পটি অনুপস্থিত থাকে তবে "অটো" ধরে নেওয়া হয়।
SYSTEMTAP_COLORS এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে রং পরিবর্তন করা যেতে পারে। বিন্যাস
ফর্ম হতে হবে key1=val1:key2=val2:key3=val3 ...ইত্যাদি বৈধ কীগুলি হল "ত্রুটি",
"সতর্কতা", "উৎস", "ক্যারেট", এবং "টোকেন"। মান নির্বাচন গ্রাফিক গঠন
রেন্ডিশন (SGR) প্যারামিটার(গুলি)। এর জন্য আপনার টার্মিনালের ডকুমেন্টেশন দেখুন
SGRs এটি সমর্থন করে। একটি উদাহরণ হিসাবে, ডিফল্ট রং হিসাবে প্রকাশ করা হবে
error=01;31:warning=00;33:source=00;34:caret=01:token=01. যদি SYSTEMTAP_COLORS হয়
অনুপস্থিত, ডিফল্ট রং ব্যবহার করা হবে। যদি এটি খালি বা অবৈধ হয়, রঙ করা হয়
বন্ধ করা.
--নিষ্ক্রিয় ক্যাশে
এই বিকল্পটি ক্যাশে ডিরেক্টরির সমস্ত ব্যবহার নিষ্ক্রিয় করে। কোন ফাইল পড়া হবে না
থেকে বা ক্যাশে লেখা।
--বিষ-ক্যাশে
এই বিকল্পটি ক্যাশে ডিরেক্টরির ফাইলগুলিকে অবৈধ হিসাবে বিবেচনা করে। কোন ফাইল পড়া হবে না
ক্যাশে থেকে, কিন্তু এই রান থেকে প্রাপ্ত ফাইলগুলি এখনও লেখা হবে
ক্যাশে যখন stap-এর ক্যাশে করা আচরণ মনে হয় তখন এটি একটি সমস্যা সমাধানের সহায়তা হিসাবে বোঝানো হয়
খারাপ ব্যবহার করা
-- বিশেষাধিকার[=stapusr | =স্ট্যাপসি | =stapdev]
এই বিকল্প নির্দেশ স্ট্যাপ স্ক্রিপ্টটি পরীক্ষা করার জন্য যা নির্মাণগুলি খুঁজছেন
নির্দিষ্ট বিশেষাধিকার স্তরের জন্য অনুমোদিত নয় (দেখুন সুবিধাহীন USERS জন).
এই ধরনের কোনো গঠন ব্যবহার করা হলে সংকলন ব্যর্থ হয়। যদি stapusr or স্ট্যাপসি হয়
একটি কম্পাইল সার্ভার ব্যবহার করার সময় নির্দিষ্ট করা হয়েছে (দেখুন --ব্যবহার-সার্ভার), সার্ভার পরীক্ষা করবে
স্ক্রিপ্ট এবং, যদি সংকলন সফল হয়, সার্ভার ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষর করবে
ফলস্বরূপ কার্নেল মডিউল, প্রত্যয়িত করে যে এটি ব্যবহারকারীদের দ্বারা ব্যবহারের জন্য নিরাপদ
নির্দিষ্ট বিশেষাধিকার স্তর।
If -- বিশেষাধিকার নির্দিষ্ট করা হয়নি, -পিএন N < 5, এবং এর সাথে নির্দিষ্ট করা হয়নি
আহ্বানকারী ব্যবহারকারী নয় শিকড়, এবং গ্রুপের সদস্য নয় stapdev, তারপর স্ট্যাপ
স্বয়ংক্রিয়ভাবে উপযুক্ত যোগ করা হবে -- বিশেষাধিকার ইতিমধ্যে বিকল্পগুলির বিকল্প
নির্দিষ্ট
--অসুবিধাহীন
এই বিকল্পটি সমতুল্য --privilege=stapusr.
--ব্যবহার-সার্ভার[=হোস্টনেম[: পোর্ট] | =আইপি ঠিকানা[: পোর্ট] | =CERT_SERIAL]
সংকলন এবং/অথবা এর সাথে একত্রে ব্যবহার করার জন্য কম্পাইল-সার্ভার(গুলি) নির্দিষ্ট করুন
--তালিকা সার্ভার এবং --ট্রাস্ট সার্ভার (নিচে দেখ). যদি কোন যুক্তি প্রদান না করা হয়, তাহলে
সুবিধাবিহীন মোডে ডিফল্ট (দেখুন -- বিশেষাধিকার) হল সামঞ্জস্যপূর্ণ সার্ভার নির্বাচন করা
যেগুলি SSL সহকর্মী এবং মডিউল স্বাক্ষরকারী এবং বর্তমানে অনলাইন হিসাবে বিশ্বস্ত।
অন্যথায় ডিফল্ট হল সামঞ্জস্যপূর্ণ সার্ভার নির্বাচন করা যা SSL হিসাবে বিশ্বস্ত
সমবয়সীদের এবং বর্তমানে অনলাইন. --ব্যবহার-সার্ভার একাধিকবার নির্দিষ্ট করা যেতে পারে, যার মধ্যে
সার্ভারের একটি তালিকা নির্দিষ্ট ক্রমে জমা হয়। সার্ভার হতে পারে
হোস্টের নাম, আইপি ঠিকানা, বা সার্টিফিকেট সিরিয়াল নম্বর দ্বারা নির্দিষ্ট করা হয়েছে (ব্যবহার করে প্রাপ্ত
--তালিকা সার্ভার) বিশ্বাস যোগ করার বা প্রত্যাহার করার সময় পরবর্তীটি সবচেয়ে বেশি ব্যবহৃত হয়
একটি সার্ভার (দেখুন --ট্রাস্ট সার্ভার নিচে). যদি একটি সার্ভার হোস্ট নাম বা আইপি দ্বারা নির্দিষ্ট করা হয়
ঠিকানা, তারপর একটি ঐচ্ছিক পোর্ট নম্বর নির্দিষ্ট করা যেতে পারে। এই জন্য দরকারী
সার্ভার অ্যাক্সেস করা যা স্থানীয় নেটওয়ার্কে নেই বা একটি নির্দিষ্ট নির্দিষ্ট করতে
সার্ভার।
IP ঠিকানাগুলি IPv4 বা IPv6 ঠিকানা হতে পারে।
যদি একটি নির্দিষ্ট IPv6 ঠিকানা স্থানীয় লিঙ্ক হয় এবং একাধিক ইন্টারফেসে বিদ্যমান থাকে,
অভিপ্রেত ইন্টারফেস একটি শতাংশের সাথে ঠিকানা যোগ করে নির্দিষ্ট করা যেতে পারে
চিহ্ন (%) এর পরে উদ্দিষ্ট ইন্টারফেসের নাম। উদাহরণ স্বরূপ,
"fe80::5eff:35ff:fe07:55ca%eth0".
একটি IPv6 ঠিকানা সহ একটি পোর্ট নম্বর নির্দিষ্ট করার জন্য, এটি আবদ্ধ করা প্রয়োজন৷
পোর্ট নম্বর আলাদা করার জন্য বর্গাকার বন্ধনীতে ([]) IPv6 ঠিকানা
ঠিকানা বাকি. যেমন, "[fe80::5eff:35ff:fe07:55ca]:5000" বা
"[fe80::5eff:35ff:fe07:55ca%eth0]:5000".
If --ব্যবহার-সার্ভার নির্দিষ্ট করা হয়নি, -পিএন N < 5, এবং এর সাথে নির্দিষ্ট করা হয়নি
আমন্ত্রণকারী ব্যবহারকারী না শিকড়, গ্রুপের সদস্য নয় stapdev, কিন্তু একজন সদস্য
গ্রুপের stapusr, তারপর স্ট্যাপ স্বয়ংক্রিয়ভাবে যোগ হবে --ব্যবহার-সার্ভার অপশনে
ইতিমধ্যে নির্দিষ্ট.
--ব্যবহার-সার্ভার-অন-ত্রুটি[=হাঁ|=না।]
যদি একটি কম্পাইল সার্ভার ব্যবহার করে একটি স্ক্রিপ্টের সংকলন পুনরায় চেষ্টা করার জন্য স্ট্যাপকে নির্দেশ দেয়
স্থানীয় হোস্টে সংকলন এমনভাবে ব্যর্থ হয় যা পরামর্শ দেয় যে এটি হতে পারে
একটি সার্ভার ব্যবহার করে সফল। এই বিকল্পটি নির্দিষ্ট করা না থাকলে, ডিফল্ট না।। যদি না
যুক্তি প্রদান করা হয়, তারপর ডিফল্ট হয় হাঁ. সংকলন জন্য পুনরায় চেষ্টা করা হবে
নির্দিষ্ট ধরণের ত্রুটি (যেমন অপর্যাপ্ত ডেটা বা সংস্থান) যা ঘটতে পারে না
একটি কম্পাইল সার্ভার দ্বারা পুনরায় সংকলনের সময়। কম্পাইল সার্ভার নির্বাচন করা হবে
স্বয়ংক্রিয়ভাবে পুনরায় সংকলন প্রচেষ্টার জন্য যদি --ব্যবহার-সার্ভার দিয়ে নির্দিষ্ট করা হয়েছিল
কোন যুক্তি নেই
--তালিকা সার্ভার[=সার্ভার]
অনুরোধের অবস্থা প্রদর্শন করুন সার্ভার, কোথায় সার্ভার একটি কমা দ্বারা পৃথক করা হয়
সার্ভার বৈশিষ্ট্যের তালিকা। বৈশিষ্ট্যের তালিকা ফিল্টার করার জন্য একত্রিত হয়
সার্ভার প্রদর্শিত। সমর্থিত গুণাবলী হল:
সব সমস্ত পরিচিত সার্ভার নির্দিষ্ট করে (বিশ্বস্ত SSL সহকর্মী, বিশ্বস্ত মডিউল স্বাক্ষরকারী,
অনলাইন সার্ভার)।
নিদিষ্ট
ব্যবহার করে নির্দিষ্ট সার্ভার নির্দিষ্ট করে --ব্যবহার-সার্ভার.
অনলাইন সার্ভার সম্পর্কে তথ্য ধরে রেখে আউটপুট ফিল্টার করে যা আছে
বর্তমানে অনলাইন।
বিশ্বস্ত
বিশ্বস্ত সার্ভার সম্পর্কে তথ্য ধরে রেখে আউটপুট ফিল্টার করে
SSL সহকর্মী হিসাবে।
চিহ্ন বিশ্বস্ত সার্ভার সম্পর্কে তথ্য ধরে রেখে আউটপুট ফিল্টার করে
মডিউল স্বাক্ষরকারী হিসাবে (দেখুন -- বিশেষাধিকার).
উপযুক্ত
সার্ভার সম্পর্কে তথ্য ধরে রেখে আউটপুট ফিল্টার করে যা আছে
বর্তমান কার্নেল রিলিজ এবং আর্কিটেকচারের সাথে সামঞ্জস্যপূর্ণ।
যদি কোন যুক্তি প্রদান করা না হয়, তাহলে ডিফল্ট হয় নিদিষ্ট. যদি কোন সার্ভার না হয়
ব্যবহার করে নির্দিষ্ট করা হয়েছে --ব্যবহার-সার্ভার, তারপর ডিফল্ট সার্ভারের জন্য --ব্যবহার-সার্ভার তালিকাভুক্ত.
মনে রাখবেন যে --তালিকা সার্ভার ব্যবহার করে আভাহি-ডেমন অনলাইন সার্ভার সনাক্ত করতে পরিষেবা। যদি
এই পরিষেবা উপলব্ধ নয়, তারপর --তালিকা সার্ভার কোন সনাক্ত করতে ব্যর্থ হবে অনলাইন
সার্ভার জন্য আদেশ --তালিকা সার্ভার IPv6 ঠিকানায় শোনা সার্ভার সনাক্ত করতে,
দ্য আভাহি-ডেমন কনফিগারেশন ফাইল /etc/avahi/avahi-daemon.conf একটি থাকা আবশ্যক
সক্রিয় "use-ipv6=yes" লাইন। এই লাইনটি যোগ করার পরে পরিষেবাটি অবশ্যই পুনরায় চালু করতে হবে৷
IPv6 সক্ষম করার জন্য অর্ডার করুন।
--ট্রাস্ট সার্ভার[=TRUST_SPEC]
ব্যবহার করে নির্দিষ্ট করা কম্পাইল-সার্ভারগুলিতে বিশ্বাস মঞ্জুর বা প্রত্যাহার করুন --ব্যবহার-সার্ভার যেমন বলা আছে
TRUST_SPEC দ্বারা, যেখানে TRUST_SPEC একটি কমা দ্বারা বিভক্ত তালিকা যা বিশ্বাসকে নির্দিষ্ট করে
যা মঞ্জুর বা প্রত্যাহার করা হবে। সমর্থিত উপাদান হল:
SSL SSL সহকর্মী হিসাবে নির্দিষ্ট সার্ভারকে বিশ্বাস করুন।
চিহ্ন মডিউল স্বাক্ষরকারী হিসাবে নির্দিষ্ট সার্ভারগুলিকে বিশ্বাস করুন (দেখুন৷ -- বিশেষাধিকার) শুধুমাত্র মূল
নির্দিষ্ট করতে পারেন স্বাক্ষরকারী
সকল ব্যবহারকারী
স্থানীয় হোস্টে সমস্ত ব্যবহারকারীদের জন্য একটি ssl পিয়ার হিসাবে বিশ্বাস মঞ্জুর করুন। ডিফল্ট হয়
শুধুমাত্র বর্তমান ব্যবহারকারীর জন্য একটি ssl পিয়ার হিসাবে বিশ্বাস প্রদান করতে। একটি মডিউল হিসাবে বিশ্বাস
স্বাক্ষরকারী সর্বদা সমস্ত ব্যবহারকারীদের জন্য মঞ্জুর করা হয়। শুধুমাত্র রুট নির্দিষ্ট করতে পারেন সকল ব্যবহারকারী.
রদ করা নির্দিষ্ট বিশ্বাস প্রত্যাহার করুন। ডিফল্ট এটি মঞ্জুর করা হয়.
কোন-প্রম্পট
অনুরোধ করা সম্পন্ন করার আগে নিশ্চিতকরণের জন্য ব্যবহারকারীকে অনুরোধ করবেন না
কর্ম. ডিফল্ট হল ব্যবহারকারীকে নিশ্চিতকরণের জন্য অনুরোধ করা।
যদি কোন যুক্তি প্রদান করা না হয়, তাহলে ডিফল্ট হয় SSL. যদি কোনো সার্ভার নির্দিষ্ট করা না থাকে
ব্যবহার --ব্যবহার-সার্ভার, তাহলে কোন বিশ্বাস মঞ্জুর বা প্রত্যাহার করা হবে না।
যদি না কোন-প্রম্পট নির্দিষ্ট করা হয়েছে, ব্যবহারকারীকে বিশ্বাস নিশ্চিত করতে বলা হবে
অপারেশন সঞ্চালিত হওয়ার আগে মঞ্জুর করা বা প্রত্যাহার করা।
--ডাম্প-প্রোব-টাইপস
সমর্থিত প্রোবের প্রকারের তালিকা ডাম্প করে এবং প্রস্থান করে। যদি --privilege=stapusr এছাড়াও
নির্দিষ্ট করা হলে, তালিকাটি সুবিধাহীন ব্যবহারকারীদের জন্য উপলব্ধ প্রোবের প্রকারের মধ্যে সীমাবদ্ধ থাকবে।
--ডাম্প-প্রোব-উপানাৎ
লাইব্রেরি ফাইলে পাওয়া সমস্ত প্রোব উপনামের একটি তালিকা ডাম্প করে এবং প্রস্থান করে।
--ডাম্প-ফাংশন
লাইব্রেরি ফাইলে পাওয়া সমস্ত ফাংশনের একটি তালিকা ডাম্প করে এবং প্রস্থান করে। এছাড়াও তাদের অন্তর্ভুক্ত
পরামিতি এবং প্রকার। 'অজানা' টাইপের একটি ফাংশন এমন একটি ফাংশন নির্দেশ করে যা করে
একটি মান ফেরত না. মনে রাখবেন যে সমস্ত ফাংশন/প্যারামিটার প্রকারগুলি সমাধান করা যাবে না
(এগুলি 'অজানা' দ্বারাও দেখানো হয়েছে)। এই বৈশিষ্ট্য খুব মেমরি-নিবিড় এবং
এইভাবে সঙ্গে সঠিকভাবে কাজ নাও হতে পারে --ব্যবহার-সার্ভার যদি লক্ষ্য সার্ভার একটি সীমা আরোপ করে
প্রক্রিয়া মেমরির উপর (যেমন এর মাধ্যমে ~ stap-server/.systemtap/rc কনফিগারেশন ফাইল,
দেখ স্ট্যাপ সার্ভার(8))।
--দূরবর্তী URL টি
প্রদত্ত হোস্টে কার্যকর করার লক্ষ্য নির্ধারণ করুন। এই বিকল্প টার্গেট পুনরাবৃত্তি হতে পারে
একাধিক মৃত্যুদন্ড লক্ষ্য। পাস 1-4 স্থানীয়ভাবে নির্মাণ করা স্বাভাবিক হিসাবে সম্পন্ন করা হয়
স্ক্রিপ্ট, এবং তারপর পাস 5 লক্ষ্যে মডিউলটি অনুলিপি করবে এবং এটি চালাবে।
গ্রহণযোগ্য URL ফর্ম অন্তর্ভুক্ত:
[USER@]HOSTNAME, ssh://[USER@]HOSTNAME
এই মোডটি ssh ব্যবহার করে, ঐচ্ছিকভাবে আপনার নিজের সাথে মেলে না এমন একটি ব্যবহারকারীর নাম ব্যবহার করে। যদি একটি
কাস্টম ssh_config ফাইলটি ব্যবহার করা হচ্ছে, যোগ করুন SendEnv ল্যাং ধরে রাখতে
আন্তর্জাতিকীকরণ কার্যকারিতা।
libvirt://DOMAIN, libvirt://DOMAIN/LIBVIRT_URI
এই মোড ব্যবহার করে stapvirt দ্বারা পরিচালিত একটি ডোমেনে স্ক্রিপ্ট চালানোর জন্য
libvirt ঐচ্ছিকভাবে, LIBVIRT_URI একটি নির্দিষ্ট সাথে সংযোগ করার জন্য নির্দিষ্ট করা হতে পারে
ড্রাইভার এবং/অথবা একটি দূরবর্তী হোস্ট। উদাহরণস্বরূপ, স্থানীয় সুবিধাপ্রাপ্তদের সাথে সংযোগ করতে
QEMU ড্রাইভার, ব্যবহার করুন:
--remote libvirt://MyDomain/qemu:///system
এ পৃষ্ঠাটি দেখুনhttp://libvirt.org/uri.html> সমর্থিত URI-এর জন্য। এছাড়াও দেখুন
stapvirt(1) স্ট্যাপের জন্য ডোমেন কীভাবে প্রস্তুত করবেন সে সম্পর্কে আরও তথ্যের জন্য
অনুসন্ধান
ইউনিক্স: PATH
এই মোডটি একটি UNIX সকেটের সাথে সংযোগ করে। এটি একটি QEMU ভার্টিও-এর সাথে ব্যবহার করা যেতে পারে-
চলমান ভার্চুয়াল মেশিনের ভিতরে স্ক্রিপ্ট চালানোর জন্য সিরিয়াল পোর্ট।
সরাসরি://
স্থানীয় হোস্টে চালানোর জন্য বিশেষ লুপব্যাক মোড।
--রিমোট-প্রিফিক্স
দূরবর্তী আউটপুটের প্রতিটি লাইনের উপসর্গ "N:" দিয়ে লিখুন, যেখানে N হল রিমোটের সূচক
এক্সিকিউশন টার্গেট যেখান থেকে প্রদত্ত লাইনের উৎপত্তি।
--ডাউনলোড-ডিবাগিনফো[=বিকল্প]
স্বয়ংক্রিয় ডিবাগিনফো ডাউনলোড বৈশিষ্ট্যের জন্য সক্ষম, অক্ষম বা একটি সময়সীমা সেট করুন৷
OPTION দ্বারা নির্দিষ্ট করা abrt দ্বারা অফার করা হয়, যেখানে OPTION নিম্নলিখিতগুলির মধ্যে একটি:
হাঁ কোনো সময়সীমা ছাড়াই ডিবাগিনফো স্বয়ংক্রিয়ভাবে ডাউনলোড করা সক্ষম করুন। একই ধরনের
একটি বিকল্প মান প্রদান না করা হিসাবে --ডাউনলোড-ডিবাগিনফো
না। debuginfo-এর স্বয়ংক্রিয় ডাউনলোডিং স্পষ্টভাবে অক্ষম করুন। এই হিসাবে একই
বিকল্পটি মোটেও ব্যবহার করছেন না।
জিজ্ঞাসা করা abrt আউটপুট দেখান এবং ডাউনলোড চালিয়ে যাওয়ার আগে জিজ্ঞাসা করুন। কোন সময়সীমা হবে না
সেট।
ডাউনলোড বন্ধ করার জন্য একটি ধনাত্মক সংখ্যা হিসাবে একটি সময়সীমা নির্দিষ্ট করুন যদি এটি গ্রহণ করে
অতিদীর্ঘ.
--আরলিমিট-এভাবে=NUM
প্রসেসের ভার্চুয়াল মেমরির (অ্যাড্রেস স্পেস) সর্বাধিক আকার বাইটগুলিতে নির্দিষ্ট করুন।
যদি কিছু নির্দিষ্ট করা না থাকে, কোন সীমা আরোপ করা হয় না।
--rlimit-cpu=NUM
CPU সময়সীমা নির্দিষ্ট করুন, সেকেন্ডে। যদি কিছুই নির্দিষ্ট করা না থাকে, কোন সীমা নেই
আরোপিত.
--rlimit-nproc=NUM
তৈরি করা যেতে পারে এমন সর্বাধিক সংখ্যক প্রসেস উল্লেখ করুন। যদি কিছুই না হয়
নির্দিষ্ট, কোন সীমা আরোপ করা হয় না.
--আরলিমিট-স্ট্যাক=NUM
বাইটে, প্রক্রিয়া স্ট্যাকের সর্বাধিক আকার নির্দিষ্ট করুন। যদি কিছু নির্দিষ্ট না থাকে,
কোন সীমা আরোপ করা হয় না।
--rlimit-fsize=NUM
বাইটগুলিতে প্রক্রিয়াটি তৈরি করতে পারে এমন ফাইলগুলির সর্বাধিক আকার নির্দিষ্ট করুন৷ যদি কিছুই না
নির্দিষ্ট করা হয়েছে, কোন সীমা আরোপ করা হয় না।
--sysroot=DIR
sysroot ডিরেক্টরি নির্দিষ্ট করুন যেখানে টার্গেট ফাইল (এক্সিকিউটেবল, লাইব্রেরি, ইত্যাদি) আছে
অবস্থিত সঙ্গে -r মুক্তি, sysroot উপযুক্ত কার্নেলের জন্য অনুসন্ধান করা হবে
ডিরেক্টরি তৈরি করুন। সঙ্গে -r / ডিআইআর, তবে, sysroot খুঁজে বের করতে ব্যবহার করা হবে না
কার্নেল বিল্ড।
--সিসেনভ=VAR=মান
একটি এনভায়রনমেন্ট ভেরিয়েবলের জন্য একটি বিকল্প মান প্রদান করুন যেখানে একটি দূরবর্তী মান
সিস্টেম ভিন্ন। পাথ ভেরিয়েবল (যেমন PATH, LD_LIBRARY_PATH) বলে ধরে নেওয়া হয়
দ্বারা প্রদত্ত ডিরেক্টরির সাথে সম্পর্কিত --sysroot, যদি প্রদান করা হয়।
-- দমন-সময়-সীমা
অক্ষম করুন -DSTP_OVERLOAD সম্পর্কিত বিকল্পগুলির পাশাপাশি -DMAXACTION এবং -DMAXTRYLOCK৷
এই বিকল্পটি গুরু মোড প্রয়োজন.
--রানটাইম=মোড
পাস-5 রানটাইম মোড সেট করুন। বৈধ বিকল্প আছে শাঁস (ডিফল্ট) এবং dyninst। দেখ
একান্তর রানটাইমস আরো তথ্যের জন্য নীচে।
--ডাইনিস্ট
শর্টহ্যান্ডের জন্য --runtime=dyninst.
--সঞ্চয়-বিপর্যয়
যেসব মেশিনে SystemTap-এর নিজস্ব uprobes মডিউল তৈরি করার প্রয়োজন হয় (কার্নেল আগে
সংস্করণ 3.5-তে), এই বিকল্পটি SystemTap-কে মডিউলের একটি অনুলিপি সংরক্ষণ করার নির্দেশ দেয়
বর্তমান ডিরেক্টরিতে (প্রথমে একটি নতুন "আপোরোব" ডিরেক্টরি তৈরি করা হচ্ছে)।
--টার্গেট-নেমস্পেস=পিআইডি
প্রদত্ত নামস্থানের উপর ভিত্তি করে টার্গেট নেমস্পেসের একটি সেট সেট করার অনুমতি দিন
পিআইডি আছে। এটি নেমস্পেস-সচেতন ট্যাপসেট ফাংশনের জন্য। টার্গেট নেমস্পেস হলে
সেট করা হয়নি, টার্গেট ডিফল্ট স্ট্যাপ প্রক্রিয়ার নামস্থানে।
যুক্তি
কমান্ড লাইনের যেকোনো অতিরিক্ত আর্গুমেন্ট স্ক্রিপ্ট পার্সারে পাঠানো হয়
প্রতিস্থাপন নিচে দেখ.
স্ক্রিপ্ট ভাষা
সিস্টেমট্যাপ স্ক্রিপ্ট ভাষার অনুরূপ অজস্র এবং C. দুটি প্রধান বহিরাগত আছে
গঠন: প্রোব এবং ফাংশন। এইগুলির মধ্যে, বিবৃতি এবং অভিব্যক্তি C-এর মতো ব্যবহার করে
অপারেটর সিনট্যাক্স এবং অগ্রাধিকার।
সাধারণ বাক্য গঠন
হোয়াইটস্পেস উপেক্ষা করা হয়. তিন ধরনের মন্তব্য সমর্থিত:
# ... শেল শৈলী, লাইনের শেষ পর্যন্ত, $# এবং @# ছাড়া
// ... C++ শৈলী, লাইনের শেষে
/* ... সি শৈলী ... */
আক্ষরিকগুলি হয় ডাবল-কোটগুলিতে আবদ্ধ স্ট্রিংগুলি (সাধারণ C এস্কেপের মধ্য দিয়ে যাওয়া
ব্যাকস্ল্যাশ সহ কোড, এবং সংলগ্ন স্ট্রিং লিটারেলগুলি একসাথে আঠালো, যেমন C এর মতো),
বা পূর্ণসংখ্যা (দশমিক, হেক্সাডেসিমেল, বা অক্টাল, C এর মতো একই স্বরলিপি ব্যবহার করে)। সব
স্ট্রিংগুলি কিছু যুক্তিসঙ্গত মানের (কয়েক শত বাইট) দৈর্ঘ্যে সীমাবদ্ধ। পূর্ণসংখ্যা
64-বিট স্বাক্ষরিত পরিমাণ, যদিও পার্সার মান গ্রহণ করে (এবং চারপাশে মোড়ানো)
ধনাত্মক 2**63 এর উপরে।
উপরন্তু, কমান্ড লাইনের শেষে প্রদত্ত স্ক্রিপ্ট আর্গুমেন্ট সন্নিবেশ করা যেতে পারে। ব্যবহার করুন
$1 ... $ উদ্ধৃতিহীন সন্নিবেশের জন্য, @1 ... @ একটি স্ট্রিং আক্ষরিক হিসাবে সন্নিবেশ জন্য. দ্য
আর্গুমেন্ট সংখ্যা মাধ্যমে অ্যাক্সেস করা যেতে পারে $# (একটি উদ্ধৃত সংখ্যা হিসাবে) বা মাধ্যমে @# (হিসেবে
উদ্ধৃত সংখ্যা)। এগুলি যে কোনও জায়গায় ব্যবহার করা যেতে পারে একটি টোকেন শুরু হতে পারে, এর মধ্যে সহ
প্রিপ্রসেসিং পর্যায়। আসলে যা দেওয়া হয়েছিল তার বাইরে একটি আর্গুমেন্ট নম্বরের রেফারেন্স হল একটি
ত্রুটি।
প্রিপ্রসেসিং
পার্সিংয়ের একটি অংশ হিসাবে একটি সাধারণ শর্তাধীন প্রিপ্রসেসিং পর্যায় চালানো হয়। সাধারণ রূপ হল
cond অনুরূপ ? এক্সপ 1 : exp2 টারনারি অপারেটর:
%( শর্ত %? ট্রু-টোকেন %)
%( শর্ত %? ট্রু-টোকেন %: মিথ্যা-টোকেন %)
CONDITION হল একটি অভিব্যক্তি যার বিন্যাসটি তার প্রথম কীওয়ার্ড দ্বারা নির্ধারিত হয়, বা৷
একটি স্ট্রিং আক্ষরিক তুলনা বা একটি সংখ্যাসূচক আক্ষরিক তুলনা। এটিও গঠিত হতে পারে
অনেকগুলি বিকল্প এবং CONDITIONs এর সংমিশ্রণ (আগের বাক্যের মত) ব্যবহার করে ||
এবং && যথাক্রমে। যাইহোক, বন্ধনী এখনও সমর্থিত নয়, তাই মনে রাখা
সংযোজন বিকল্পের উপর অগ্রাধিকার নেয় গুরুত্বপূর্ণ।
যদি প্রথম অংশটি সনাক্তকারী হয় কার্নেল_ভিআর or kernel_v কার্নেল সংস্করণ উল্লেখ করতে
সংখ্যা, ("2.6.13-1.322FC3smp") সহ বা ছাড়া ("2.6.13") রিলিজ কোড প্রত্যয়, তারপর
দ্বিতীয় অংশটি ছয়টি স্ট্যান্ডার্ড নিউমেরিক তুলনা অপারেটরের একটি <, <=, ==, !=, >,
এবং >=, এবং তৃতীয় অংশটি একটি স্ট্রিং লিটারেল যাতে একটি RPM-স্টাইল সংস্করণ-রিলিজ রয়েছে
মান শর্তটি সন্তুষ্ট বলে মনে করা হয় যদি লক্ষ্য কার্নেলের সংস্করণ (যেমন
ঐচ্ছিকভাবে দ্বারা ওভাররাইড করা হয়েছে -r বিকল্প) প্রদত্ত সংস্করণ স্ট্রিংয়ের সাথে তুলনা করে। দ্য
glibc ফাংশন দ্বারা তুলনা করা হয় strverscmp. একটি বিশেষ ক্ষেত্রে, যদি
অপারেটর সহজ সমতার জন্য (==), অথবা অসমতা (!=), এবং তৃতীয় অংশে যেকোনও রয়েছে
ওয়াইল্ডকার্ড অক্ষর (* or ? or [), তারপর অভিব্যক্তিটিকে একটি ওয়াইল্ডকার্ড (মিস) মিল হিসাবে গণ্য করা হয়
দ্বারা মূল্যায়ন হিসাবে fnmatch.
যদি, অন্যদিকে, প্রথম অংশটি সনাক্তকারী খিলান প্রসেসর উল্লেখ করতে
আর্কিটেকচার (কারনেল বিল্ড সিস্টেম ARCH/SUBARCH দ্বারা নামকরণ করা হয়েছে), তারপর দ্বিতীয় অংশ হল
দুটি স্ট্রিং তুলনা অপারেটরের মধ্যে একটি == or !=, এবং তৃতীয় অংশ একটি স্ট্রিং
এটা মেলে জন্য আক্ষরিক. এই তুলনাটি একটি ওয়াইল্ডকার্ড (মিস) মিল।
একইভাবে, প্রথম অংশ যদি একটি শনাক্তকারী মত হয় CONFIG_something একটি কার্নেল উল্লেখ করতে
কনফিগারেশন বিকল্প, তারপর দ্বিতীয় অংশ == or !=, এবং তৃতীয় অংশ একটি স্ট্রিং
মান মেলানোর জন্য আক্ষরিক (সাধারণত "y" বা "m")। অস্তিত্বহীন বা আনসেট কার্নেল
কনফিগারেশন বিকল্পগুলি খালি স্ট্রিং দ্বারা উপস্থাপিত হয়। এই তুলনা এছাড়াও একটি
ওয়াইল্ডকার্ড (ভুল) মিল।
যদি প্রথম অংশটি সনাক্তকারী হয় systemtap_v, পরীক্ষাটি সিস্টেমট্যাপকে বোঝায়
সামঞ্জস্যপূর্ণ সংস্করণ, যা এর সাথে পুরানো স্ক্রিপ্টগুলির জন্য ওভাররাইড করা হতে পারে৷ --উপযুক্ত পতাকা।
তুলনা অপারেটর হিসাবে হয় kernel_v এবং ডান অপারেন্ড একটি সংস্করণ স্ট্রিং।
এছাড়াও নীচের বর্জন বিভাগটি দেখুন৷
যদি প্রথম অংশটি সনাক্তকারী হয় systemtap_privilege, পরীক্ষা বিশেষাধিকার বোঝায়
যে স্তরের সাথে systemtap স্ক্রিপ্ট কম্পাইল করা হয়েছে। এখানে দ্বিতীয় অংশ == or !=, এবং
তৃতীয় অংশ একটি স্ট্রিং আক্ষরিক, হয় "স্ট্যাপুসর" বা "স্ট্যাপসিস" বা "স্ট্যাপদেব"।
যদি প্রথম অংশটি সনাক্তকারী হয় গুরু_মোড, পরীক্ষা নির্দেশ করে যদি systemtap স্ক্রিপ্ট
guru_mode দিয়ে কম্পাইল করা হয়েছে। এখানে দ্বিতীয় অংশ == or !=, এবং তৃতীয় অংশ হল a
সংখ্যা, হয় 1 বা 0।
যদি প্রথম অংশটি সনাক্তকারী হয় রানটাইম, পরীক্ষাটি সিস্টেমট্যাপ রানটাইমকে নির্দেশ করে
মোড. দেখা একান্তর রানটাইমস রানটাইম সম্পর্কে আরও তথ্যের জন্য নীচে। দ্বিতীয় অংশ হল
দুটি স্ট্রিং তুলনা অপারেটরের মধ্যে একটি == or !=, এবং তৃতীয় অংশ একটি স্ট্রিং
এটা মেলে জন্য আক্ষরিক. এই তুলনাটি একটি ওয়াইল্ডকার্ড (মিস) মিল।
অন্যথায়, CONDITION দুটি স্ট্রিং লিটারেল বা দুটির মধ্যে একটি তুলনা হতে পারে বলে আশা করা হচ্ছে৷
সংখ্যাসূচক আক্ষরিক এই ক্ষেত্রে, আর্গুমেন্ট হল একমাত্র ভেরিয়েবল ব্যবহারযোগ্য।
TRUE-TOKENS এবং FALSE-TOKENS হল শূন্য বা আরও সাধারণ পার্সার টোকেন (সম্ভবত
নেস্টেড প্রিপ্রসেসর কন্ডিশনাল সহ), এবং ইনপুট স্ট্রীমে পাস করা হয় যদি
শর্ত সত্য বা মিথ্যা। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি পার্স ত্রুটির প্ররোচিত করে যদি না
টার্গেট কার্নেল সংস্করণ 2.6.5 এর চেয়ে নতুন:
%( kernel_v <= "2.6.5" %? **ERROR** %) # অবৈধ টোকেন ক্রম
নিম্নলিখিত কোডটি অনুমানমূলক কার্নেল সংস্করণ ড্রিফটের সাথে মানিয়ে নিতে পারে:
probe kernel.function (
%( kernel_v <= "2.6.12" %? "__mm_do_fault" %:
%( kernel_vr == "2.6.13*smp" %? "do_page_fault" %:
অসমর্থিত %) %)
) { /* ... */ }
%( arch == "ia64" %?
probe syscall.vliw = kernel.function("vliw_widget") {}
%)
প্রিপ্রসেসর ম্যাক্রো
প্রিপ্রসেসর একটি সাধারণ ম্যাক্রো সুবিধাও সমর্থন করে, আগে একটি পৃথক পাস হিসাবে চালানো হয়
শর্তাধীন প্রিপ্রসেসিং।
নিম্নলিখিত গঠন ব্যবহার করে ম্যাক্রো সংজ্ঞায়িত করা হয়:
@নির্ধারিত নাম %( BODY %)
@নির্ধারিত নাম(PARAM_1, PARAM_2, ...) %( BODY %)
ম্যাক্রো এবং একটি ম্যাক্রো বডির ভিতরের প্যারামিটার, উভয়ই ম্যাক্রো নামের উপসর্গ দিয়ে আমন্ত্রণ জানানো হয়
একটি @ প্রতীক সহ:
@foo %( x %) সংজ্ঞায়িত করুন
@ সংজ্ঞায়িত করুন যোগ(a,b) %( ((@a)+(@b)) %)
@foo = @add(2,2)
শর্তসাপেক্ষ সংকলনের আগে ম্যাক্রো সম্প্রসারণ বর্তমানে একটি পৃথক পাসে সঞ্চালিত হয়।
অতএব, শর্তসাপেক্ষ অভিব্যক্তিতে সত্য- এবং মিথ্যা-টোকেন উভয়ই ম্যাক্রো সম্প্রসারিত হবে
অবস্থা নির্বিশেষে মূল্যায়ন করা হয় কিভাবে. এটি কখনও কখনও ত্রুটির কারণ হতে পারে:
// নিম্নলিখিত ফলাফলগুলি একটি দ্বন্দ্বে পরিণত হয়:
%( CONFIG_UTRACE == "y" %?
@foo সংজ্ঞায়িত করুন %( process.syscall %)
%:
@foo %( **ERROR** %) সংজ্ঞায়িত করুন
%)
// নিম্নলিখিতগুলি প্রত্যাশিতভাবে সঠিকভাবে কাজ করে:
@foo সংজ্ঞায়িত করুন %(
%( CONFIG_UTRACE == "y" %? process.syscall %: **ERROR** %)
%)
প্রথম উদাহরণটি ভুল কারণ উভয় @defines-এর আগে একটি পাসে মূল্যায়ন করা হয়
শর্তসাপেক্ষে মূল্যায়ন করা হচ্ছে।
সাধারণত, একটি ম্যাক্রো সংজ্ঞা যে ফাইলটিতে থাকে তার স্থানীয় হয়। এইভাবে, একটি ম্যাক্রো সংজ্ঞায়িত করা
একটি ট্যাপসেট ট্যাপসেটের ব্যবহারকারীর কাছে এটি উপলব্ধ করে না। সর্বজনীনভাবে উপলব্ধ
লাইব্রেরি ম্যাক্রোগুলি ট্যাপসেট অনুসন্ধানের পথে .stpm ফাইলগুলি অন্তর্ভুক্ত করে সংজ্ঞায়িত করা যেতে পারে। এইগুলো
ফাইলগুলিতে শুধুমাত্র @define কনস্ট্রাক্ট থাকতে পারে, যা সমস্ত ট্যাপসেট জুড়ে দৃশ্যমান হয় এবং
ব্যবহারকারীর স্ক্রিপ্ট।
বৈচিত্র্য
ভেরিয়েবল এবং ফাংশনের শনাক্তকারী একটি আলফানিউমেরিক ক্রম এবং এতে অন্তর্ভুক্ত থাকতে পারে _
এবং $ চরিত্র. এগুলি একটি প্লেইন ডিজিট দিয়ে শুরু নাও হতে পারে, যেমন সি. প্রতিটি পরিবর্তনশীল দ্বারা
প্রোব বা ফাংশন স্টেটমেন্ট ব্লকের ডিফল্ট স্থানীয় যার মধ্যে এটি উল্লেখ করা হয়েছে, এবং
তাই এর সুযোগ এবং জীবনকাল একটি নির্দিষ্ট অনুসন্ধান বা ফাংশন আহ্বানের মধ্যে সীমাবদ্ধ।
স্কেলার ভেরিয়েবলগুলি স্পষ্টভাবে স্ট্রিং বা পূর্ণসংখ্যা হিসাবে টাইপ করা হয়। সহযোগী অ্যারে
এছাড়াও একটি স্ট্রিং বা পূর্ণসংখ্যার মান আছে, এবং স্ট্রিং এবং/অথবা পূর্ণসংখ্যার একটি হিসাবে পরিবেশন করছে
চাবি. এখানে কয়েকটি মৌলিক অভিব্যক্তি আছে।
var1 = 5
var2 = "বার"
array1 [pid()] = "নাম" # একক সংখ্যাসূচক কী
array2 ["foo", 4,i++] += স্ট্রিং/সংখ্যা/সংখ্যা কীগুলির 5 # ভেক্টর
যদি (["হ্যালো", 5,4] অ্যারে2) println ("হ্যাঁ") # সদস্যপদ পরীক্ষা
অনুবাদক সম্পাদন করেন আদর্শ অনুমান অ্যারে সূচক সহ সমস্ত শনাক্তকারীতে এবং
ফাংশন পরামিতি। শনাক্তকারীর অসঙ্গত টাইপ-সম্পর্কিত ব্যবহার একটি ত্রুটির সংকেত দেয়।
ভেরিয়েবলগুলিকে বিশ্বব্যাপী ঘোষণা করা যেতে পারে, যাতে সেগুলি সমস্ত প্রোবের মধ্যে ভাগ করা হয় এবং এইভাবে বাস করে
পুরো সিস্টেমট্যাপ সেশনের মতো দীর্ঘ। সমস্ত গ্লোবাল ভেরিয়েবলের জন্য একটি নামস্থান আছে,
তারা কোন স্ক্রিপ্ট ফাইল মধ্যে পাওয়া যায় নির্বিশেষে. বিশ্বব্যাপী সমসাময়িক অ্যাক্সেস
ভেরিয়েবল স্বয়ংক্রিয়ভাবে লক দিয়ে সুরক্ষিত, দেখুন নিরাপত্তা এবং নিরাপত্তা জন্য বিভাগ
আরো বিস্তারিত. একটি বৈশ্বিক ঘোষণা বাইরের স্তরে কোথাও লেখা হতে পারে, নয়
কোড ব্লকের মধ্যে। গ্লোবাল ভেরিয়েবল যা লেখা হয় কিন্তু পড়া হয় না
সেশন শাটডাউনে স্বয়ংক্রিয়ভাবে প্রদর্শিত হয়। অনুবাদক প্রত্যেকটির মান অনুমান করবে
টাইপ, এবং যদি এটি একটি অ্যারে হিসাবে ব্যবহার করা হয় তবে এর কী প্রকারগুলি। ঐচ্ছিকভাবে, স্কেলার গ্লোবাল হতে পারে
একটি স্ট্রিং বা সংখ্যা আক্ষরিক দিয়ে আরম্ভ করা হয়েছে। নিম্নলিখিত ঘোষণা ভেরিয়েবলগুলিকে হিসাবে চিহ্নিত করে৷
গ্লোবাল।
বিশ্বব্যাপী var1, var2, var3=4
গ্লোবাল ভেরিয়েবলগুলিও মডিউল বিকল্প হিসাবে সেট করা যেতে পারে। কেউ হয় -G ব্যবহার করে এটি করতে পারেন
বিকল্প, অথবা মডিউলটি প্রথমে stap -p4 ব্যবহার করে কম্পাইল করতে হবে। গ্লোবাল ভেরিয়েবল তারপর হতে পারে
stap -p4 দ্বারা উত্পন্ন মডিউলে staprun কল করার সময় কমান্ড লাইনে সেট করুন। দেখা
staprun(8) আরও তথ্যের জন্য।
অ্যারেগুলি MAXMAPENTRIES ভেরিয়েবল দ্বারা আকারে সীমাবদ্ধ -- দেখুন নিরাপত্তা এবং নিরাপত্তা
বিস্তারিত জানার জন্য বিভাগ। ঐচ্ছিকভাবে, গ্লোবাল অ্যারে সর্বোচ্চ আকারের সাথে ঘোষণা করা যেতে পারে
বন্ধনী, শুধুমাত্র সেই অ্যারের জন্য MAXMAPENTRIES ওভাররাইড করে। মনে রাখবেন যে এটি নির্দেশ করে না
অ্যারের জন্য কী ধরনের, শুধু আকার।
বিশ্বব্যাপী ক্ষুদ্র_অ্যারে[10], normal_array, বড়_অ্যারে[50000]
অ্যারেগুলি '%' প্রত্যয় ব্যবহার করে মোড়ানোর জন্য কনফিগার করা হতে পারে। এটি পুরানো উপাদানের কারণ হয়
ওভাররাইট করা হবে যদি অ্যারে ধরে রাখতে পারে তার চেয়ে বেশি উপাদান ঢোকানো হয়। এটি উভয়ের জন্য কাজ করে
সহযোগী এবং পরিসংখ্যান টাইপ করা অ্যারে।
বিশ্বব্যাপী wrapped_array1%[10], wrapped_array2%
অনেক ধরনের প্রোব পয়েন্ট কনটেক্সট ভেরিয়েবল প্রদান করে, যা রান-টাইম মান, নিরাপদে
কার্নেল বা ইউজারস্পেস প্রোগ্রাম থেকে বের করা হয়েছে যা অনুসন্ধান করা হচ্ছে। এই সঙ্গে উপসর্গ হয়
$ চরিত্র কনটেক্সট ভেরিয়েবলস বিভাগে stapprobes(3stap) যা পাওয়া যায় তা তালিকাভুক্ত করে
প্রতিটি ধরণের প্রোব পয়েন্টের জন্য। এই প্রসঙ্গ ভেরিয়েবল স্বাভাবিক স্ট্রিং বা সাংখ্যিক হয়
স্কেলারগুলি একবার সাধারণ স্ক্রিপ্ট ভেরিয়েবলে সংরক্ষণ করা হয়। টাইপকাস্টিং বিভাগটি দেখুন
প্রসঙ্গ হিসাবে আরও প্রক্রিয়াকরণের জন্য কীভাবে সেগুলিকে টাইপ করা পয়েন্টারগুলিতে ফিরিয়ে দেওয়া যায় সে সম্পর্কে নীচে
ভেরিয়েবল।
পরিসংখ্যান
বিবৃতি পদ্ধতিগত নিয়ন্ত্রণ প্রবাহ সক্রিয়. তারা ফাংশন এবং প্রোবের মধ্যে ঘটতে পারে
হ্যান্ডলার কোনো একক তদন্ত ইভেন্টের প্রতিক্রিয়ায় সম্পাদিত বিবৃতির মোট সংখ্যা
অনূদিত সি কোডে একটি ম্যাক্রো দ্বারা সংজ্ঞায়িত কিছু সংখ্যার মধ্যে সীমাবদ্ধ, এবং রয়েছে৷
1000 এর প্রতিবেশী।
EXP স্ট্রিং- বা পূর্ণসংখ্যা-মূল্যবান এক্সপ্রেশন চালান এবং মানটি ফেলে দিন।
{ STMT1 STMT2... }
এই ব্লকে ক্রমানুসারে প্রতিটি স্টেটমেন্ট এক্সিকিউট করুন। উল্লেখ্য যে বিভাজক বা
বিবৃতিগুলির মধ্যে সাধারণত টার্মিনেটরের প্রয়োজন হয় না।
; শূন্য বিবৃতি, কিছুই করবেন না. এটি মধ্যে একটি ঐচ্ছিক বিভাজক হিসাবে দরকারী
সিনট্যাক্স-ত্রুটি সনাক্তকরণ উন্নত করতে এবং নির্দিষ্ট ব্যাকরণ পরিচালনা করতে বিবৃতি
অস্পষ্টতা
if (EXP) STMT1 [ আর STMT2 ]
পূর্ণসংখ্যা-মূল্যবান EXP-কে শূন্যের সাথে তুলনা করুন। প্রথম (শূন্য নয়) বা দ্বিতীয় STMT চালান
(শূন্য)।
যখন (EXP) STMT
পূর্ণসংখ্যা-মূল্যবান EXP অ-শূন্যে মূল্যায়ন করার সময়, STMT চালান।
উন্নত (EXP1; EXP2; EXP3) STMT
আরম্ভ হিসাবে EXP1 চালান। যখন EXP2 অ-শূন্য, STMT চালান, তারপর
পুনরাবৃত্তি এক্সপ্রেশন EXP3.
প্রতিটির জন্য (ভিএআর in অ্যারে [ সীমা EXP ]) STMT
VAR-এ বর্তমান কী বরাদ্দ করে, নামযুক্ত গ্লোবাল অ্যারের প্রতিটি উপাদানের উপর লুপ করুন।
বিবৃতিতে অ্যারে পরিবর্তন করা যাবে না। একটি একক যোগ করে + or -
VAR বা ARRAY শনাক্তকারীর পরে অপারেটর, পুনরাবৃত্তি একটিতে এগিয়ে যাবে
ক্রমবর্ধমান ক্রম, আরোহী বা অবরোহ সূচক বা মান দ্বারা। যদি অ্যারে থাকে
পরিসংখ্যান সমষ্টি, পছন্দসই যোগ @অপারেটর ARRAY শনাক্তকারীর মধ্যে
এবং শীর্ষ XNUMX গ্লোবাল HR এক্সিলেন্স অ্যাওয়ার্ডের + or - বাছাই সমষ্টি ফাংশন নির্দিষ্ট করবে. পরিসংখ্যান দেখুন
উপলব্ধ বেশী জন্য নীচের অধ্যায়. ডিফল্ট হয় @গণনা. ঐচ্ছিক ব্যবহার করে সীমা
কীওয়ার্ড লুপ পুনরাবৃত্তির সংখ্যা EXP বার সীমাবদ্ধ করে। EXP একবার মূল্যায়ন করা হয়
লুপের শুরুতে।
প্রতিটির জন্য ([VAR1, VAR2, ...] in অ্যারে [ সীমা EXP ]) STMT
উপরের মতই, যখন অ্যারেকে একটি টুপল কী দিয়ে সূচী করা হয় তখন ব্যবহার করা হয়। একটি বাছাই
প্রত্যয়টি সর্বাধিক একটি VAR বা ARRAY শনাক্তকারীতে ব্যবহার করা যেতে পারে।
প্রতিটির জন্য ([VAR1, VAR2, ...] in অ্যারে [INDEX1, INDEX2, ...] [ সীমা EXP ]) STMT
উপরের হিসাবে একই, যেখানে পুনরাবৃত্তিগুলি অ্যারের উপাদানগুলিতে সীমাবদ্ধ যেখানে কীগুলি
নির্দিষ্ট সূচক মান মেলে. প্রতীক * একটি সূচক নির্দিষ্ট করতে ব্যবহার করা যেতে পারে এবং
ওয়াইল্ডকার্ড হিসেবে গণ্য হবে।
প্রতিটির জন্য (মান = VAR in অ্যারে [ সীমা EXP ]) STMT
foreach এর এই রূপটি প্রতিটি পুনরাবৃত্তিতে বর্তমান মানকে VALUE এ সংরক্ষণ করে, তাই এটি
ARRAY[VAR] এর মতই। এটি একটি টুপল কী দিয়েও কাজ করে। বাছাই প্রত্যয় চালু
VALUE এর ARRAY-এর মতো একই প্রভাব রয়েছে৷
প্রতিটির জন্য (মান = VAR in অ্যারে [INDEX1, INDEX2, ...] [ সীমা EXP ]) STMT
উপরের হিসাবে একই, যেখানে পুনরাবৃত্তিগুলি অ্যারের উপাদানগুলিতে সীমাবদ্ধ যেখানে কীগুলি
নির্দিষ্ট সূচক মান মেলে. প্রতীক * একটি সূচক নির্দিষ্ট করতে ব্যবহার করা যেতে পারে এবং
ওয়াইল্ডকার্ড হিসেবে গণ্য হবে।
বিরতি, অবিরত
সবচেয়ে ভিতরের নেস্টিং লুপ থেকে প্রস্থান করুন বা পুনরাবৃত্তি করুন (যখন or উন্নত or প্রতিটির জন্য) বিবৃতি।
প্রত্যাবর্তন EXP
এনক্লোজিং ফাংশন থেকে EXP মান ফেরত দিন। যদি ফাংশনের মান নেওয়া না হয়
যে কোন জায়গায়, তারপর একটি রিটার্ন বিবৃতি প্রয়োজন হবে না, এবং ফাংশন একটি থাকবে
বিশেষ "অজানা" টাইপ যার কোনো রিটার্ন মান নেই।
পরবর্তী এনক্লোজিং প্রোব হ্যান্ডলার থেকে এখন ফিরে আসুন। এটি বিশেষত প্রোবের ক্ষেত্রে উপযোগী
উপনাম যা ইভেন্ট ফিল্টারিং পূর্বাভাস প্রয়োগ করে।
চেষ্টা { STMT1 } দঙ্গল { STMT2 }
প্রথম ব্লকে স্টেটমেন্ট চালান। কোনো রান-টাইম ত্রুটির ক্ষেত্রে, STMT1 এবং বাতিল করুন
STMT2 নির্বাহ করা শুরু করুন। STMT2-এর যেকোন ত্রুটি বাইরের চেষ্টা/ক্যাচে প্রচারিত হবে
ব্লক, যদি থাকে।
চেষ্টা { STMT1 } দঙ্গল(VAR) { STMT2 }
উপরের মতই, প্লাস স্ট্রিং স্কেলার ভেরিয়েবল VAR-এ ত্রুটি বার্তা বরাদ্দ করুন।
মুছে ফেলা অ্যারে [INDEX1, INDEX2, ...]
সূচক টিপল দ্বারা নির্দিষ্ট করা উপাদানটি ARRAY থেকে সরান। যদি সূচক টিপল
একটি সূচকের জায়গায় একটি * রয়েছে, *টিকে একটি ওয়াইল্ডকার্ড এবং সমস্ত উপাদান হিসাবে গণ্য করা হয়
ইনডেক্স টিপল এর সাথে মেলে এমন কীগুলির সাথে ARRAY থেকে সরানো হবে। মান হবে না
আর উপলব্ধ থাকবে, এবং পরবর্তী পুনরাবৃত্তি উপাদানটির প্রতিবেদন করবে না। এটাই
বিদ্যমান নেই এমন একটি উপাদান মুছে ফেলার জন্য একটি ত্রুটি নয়।
মুছে ফেলা পৌঁছে দিন
ARRAY থেকে সমস্ত উপাদান সরান।
মুছে ফেলা স্কেলার
SCALAR এর মান সরিয়ে দেয়। পূর্ণসংখ্যা এবং স্ট্রিং 0 এবং "" সাফ করা হয়েছে
যথাক্রমে, যখন পরিসংখ্যান প্রাথমিক খালি অবস্থায় রিসেট করা হয়।
অভিব্যক্তি
Systemtap অনেকগুলি অপারেটরকে সমর্থন করে যাদের একই সাধারণ সিনট্যাক্স, শব্দার্থবিদ্যা এবং
C এবং awk এর মতো অগ্রাধিকার। স্বাক্ষরিত জন্য সাধারণ C নিয়ম অনুযায়ী পাটিগণিত সঞ্চালিত হয়
পূর্ণসংখ্যা শূন্য বা ওভারফ্লো দ্বারা বিভাজন শনাক্ত করা হয় এবং একটি ত্রুটি দেখা দেয়।
বাইনারি সংখ্যাসূচক অপারেটর
* / % + - >> << & ^ | && ||
বাইনারি স্ট্রিং অপারেটর
. (স্ট্রিং সংযোগ)
সংখ্যাসূচক অ্যাসাইনমেন্ট অপারেটর
= *= /= %= += -= >> = << = &= ^= |=
স্ট্রিং অ্যাসাইনমেন্ট অপারেটর
= .=
unary সংখ্যাসূচক অপারেটর
+ - ! ~ ++ --
বাইনারি নিউমেরিক, স্ট্রিং তুলনা বা রেজেক্স ম্যাচিং অপারেটর
< > <= >= == != =~ !~
টার্নারি অপারেটর
Cond ? এক্সপ 1 : এক্সপ 2
গ্রুপিং অপারেটর
( মেপুঃ )
ফাংশন কল
fn ([ arg1, arg2, ... ])
অ্যারে সদস্যপদ চেক
মেপুঃ in বিন্যাস
[এক্সপ 1, এক্সপ 2, ...] in বিন্যাস
[*, *, ... ]in বিন্যাস
নিয়মিত EXPRESSION ম্যাচিং
স্ক্রিপ্টিং ভাষা নিয়মিত এক্সপ্রেশন ম্যাচিং সমর্থন করে। মৌলিক সিনট্যাক্স যেমন
অনুসরণ:
মেপুঃ =~ regex
মেপুঃ !~ regex
(প্রথম অপারেন্ডটি অবশ্যই একটি স্ট্রিংকে মূল্যায়নকারী একটি অভিব্যক্তি হতে হবে; দ্বিতীয় অপারেন্ড অবশ্যই
একটি স্ট্রিং আক্ষরিক একটি সিনট্যাক্টিক্যালি বৈধ রেগুলার এক্সপ্রেশন রয়েছে।)
রেগুলার এক্সপ্রেশন সিনট্যাক্স POSIX এক্সটেন্ডেড রেগুলারের বেশিরভাগ বৈশিষ্ট্য সমর্থন করে
এক্সপ্রেশন, সাব এক্সপ্রেশন পুনঃব্যবহার ("\1") কার্যকারিতা ছাড়া। ক্যাপচার করার ক্ষমতা
এবং মিলিত স্ট্রিং এবং সাব এক্সপ্রেশনের বিষয়বস্তু বের করা এখনও হয়নি
বাস্তবায়িত
প্রোবস
স্ক্রিপ্টিং ভাষার মূল গঠন প্রোব সনাক্ত করে। প্রোব সহযোগী বিমূর্ত
একটি স্টেটমেন্ট ব্লক ("প্রোব হ্যান্ডলার") সহ ইভেন্ট যা কার্যকর করা হবে যখন সেগুলির মধ্যে যে কোনও একটি
ঘটনা ঘটে সাধারণ সিনট্যাক্স নিম্নরূপ:
প্রোবের সন্দেহভাজন [, সন্দেহভাজন] { [STMT...] }
প্রোবের সন্দেহভাজন [, সন্দেহভাজন] if (শর্ত) { [STMT...] }
ইভেন্টগুলি "প্রোব পয়েন্ট" নামে একটি বিশেষ সিনট্যাক্সে নির্দিষ্ট করা হয়। বেশ কিছু আছে
অনুবাদকের দ্বারা সংজ্ঞায়িত বিভিন্ন ধরণের প্রোব পয়েন্ট এবং ট্যাপসেট স্ক্রিপ্টগুলি আরও সংজ্ঞায়িত করতে পারে
যারা উপনাম ব্যবহার করে। প্রোব পয়েন্টগুলি ওয়াইল্ডকার্ড, গোষ্ঠীবদ্ধ বা পছন্দ অনুসারে তালিকাভুক্ত হতে পারে
ক্রম, বা ঐচ্ছিক ঘোষিত। প্রোব পয়েন্ট সিনট্যাক্স এবং শব্দার্থবিদ্যা সম্পর্কে আরও বিশদ রয়েছে
তালিকাভুক্ত stapprobes(3stap) ম্যানুয়াল পৃষ্ঠা।
প্রোব হ্যান্ডলার প্রতিটি ইভেন্টের প্রসঙ্গের সাথে সম্পর্কিত ব্যাখ্যা করা হয়। অনুষ্ঠানের জন্য
কার্নেল কোডের সাথে যুক্ত, এই প্রসঙ্গে অন্তর্ভুক্ত হতে পারে ভেরিয়েবল সংজ্ঞায়িত উৎস কোড
সেই জায়গায় এই "প্রসঙ্গ ভেরিয়েবল" স্ক্রিপ্টে ভেরিয়েবল হিসাবে উপস্থাপন করা হয় যার
নামের উপসর্গে "$" লেখা আছে। কার্নেলের কম্পাইলার সংরক্ষিত থাকলেই সেগুলি অ্যাক্সেস করা যেতে পারে
অপ্টিমাইজেশন সত্ত্বেও তাদের. এটি একই সীমাবদ্ধতা যা একজন ডিবাগার ব্যবহারকারীর মুখোমুখি হয় যখন
অপ্টিমাইজড কোড দিয়ে কাজ করা। উপরন্তু, অবজেক্টগুলি অবশ্যই পেজড-ইন মেমরিতে উপস্থিত থাকতে হবে
systemtap প্রোব হ্যান্ডলারের কার্য সম্পাদনের মুহূর্ত, কারণ systemtap অবশ্যই ঘটাবে না
(দমন করে) কোনো অতিরিক্ত পেজিং। কিছু প্রোবের ধরন খুব কম প্রসঙ্গ আছে। দেখুন
stapprobes(3stap) ম্যান পৃষ্ঠাগুলি প্রতিটি ধরণের ক্ষেত্রে উপলব্ধ প্রসঙ্গ ভেরিয়েবলের প্রকারগুলি দেখতে
প্রোব পয়েন্টের।
প্রোব একটি সঙ্গে সজ্জিত করা যেতে পারে অস্ত্রশস্ত্র শর্ত, একটি সাধারণ বুলিয়ান গঠিত
শুধুমাত্র পঠনযোগ্য গ্লোবাল স্ক্রিপ্ট ভেরিয়েবলের উপর অভিব্যক্তি। নিরস্ত্র করার সময় (পরিস্থিতি মূল্যায়ন করে
মিথ্যা), কিছু প্রোবের ধরন তাদের রান-টাইম ওভারহেড কমায় বা বাদ দেয়। যখন একটি অস্ত্র
শর্ত সত্যে মূল্যায়ন করে, প্রোব হবে শীঘ্রই পুনরায় সশস্ত্র, এবং তাদের তদন্ত পরিচালনাকারীরা করবে
ঘটনা আগুন হিসাবে বলা শুরু. (অস্ত্রীকরণের সময় কিছু ঘটনা হারিয়ে যেতে পারে
অন্তর. যদি এটি অগ্রহণযোগ্য হয় তবে সেই অনুসন্ধানগুলির জন্য অস্ত্র দেওয়ার শর্তগুলি ব্যবহার করবেন না।)
নতুন প্রোব পয়েন্ট "অ্যালিয়াস" ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে। প্রোব পয়েন্ট উপনাম অনুরূপ দেখায়
প্রোবের সংজ্ঞা, কিন্তু প্রদত্ত বিন্দুতে একটি প্রোব সক্রিয় করার পরিবর্তে, এটি কেবল একটি সংজ্ঞায়িত করে
একটি বিদ্যমান একটি উপনাম হিসাবে নতুন প্রোব পয়েন্ট নাম। উপনাম দুই প্রকার, অর্থাৎ
প্রস্তাবনা শৈলী এবং উপসংহার শৈলী যা "=" এবং "+=" দ্বারা চিহ্নিত করা হয়
যথাক্রমে.
প্রলোগ শৈলী উপনামের জন্য, বিবৃতি ব্লক যা একটি উপনামের সংজ্ঞা অনুসরণ করে
উপনাম নির্দেশ করে এমন কোনো প্রোব-এ প্রলোগ হিসেবে অন্তর্নিহিতভাবে যোগ করা হয়। জন্য যখন
উপসংহার শৈলী উপনাম, বিবৃতি ব্লক যা একটি উপনামের সংজ্ঞা অনুসরণ করে তা অন্তর্নিহিত
উপনাম নির্দেশ করে এমন যেকোনো প্রোবের উপসংহার হিসেবে যোগ করা হয়। উদাহরণ স্বরূপ:
probe syscall.read = kernel.function("sys_read") {
fildes = $fd
if (execname() == "init") পরবর্তী # প্রোবের বাকি অংশ এড়িয়ে যান
}
একটি নতুন প্রোব পয়েন্ট সংজ্ঞায়িত করে syscall.read, যা প্রসারিত হয় kernel.function("sys_read"), সঙ্গে
প্রদত্ত বিবৃতিটি একটি প্রস্তাবনা হিসাবে, যা কিছু ভেরিয়েবলের পূর্বনির্ধারণ করতে উপযোগী
alias ব্যবহারকারী এবং/অথবা কিছু শর্তের উপর ভিত্তি করে সম্পূর্ণরূপে প্রোব প্রক্রিয়াকরণ এড়িয়ে যেতে। এবং
probe syscall.read += kernel.function("sys_read") {
if (tracethis) println ($fd)
}
প্রদত্ত স্টেটমেন্টের সাথে একটি নতুন প্রোব পয়েন্টকে একটি উপসংহার হিসাবে সংজ্ঞায়িত করে, যা গ্রহণ করা দরকারী
উপনাম ব্যবহারকারীর দ্বারা সেট করা বা রেখে যাওয়া ভেরিয়েবলের উপর ভিত্তি করে অ্যাকশন। অনুগ্রহ করে নোট করুন যে ইন
প্রতিটি ক্ষেত্রে, উপনাম হ্যান্ডলার ব্লকের বিবৃতিগুলিকে সাধারণভাবে বিবেচনা করা হয়, যাতে
সেখানে নির্ধারিত ভেরিয়েবলগুলি নিছক প্রাথমিককরণ গঠন করে, ম্যাক্রো প্রতিস্থাপন নয়।
বিল্ট-ইন প্রোব টাইপের মতো একটি উপনাম ব্যবহার করা হয়।
probe syscall.read {
printf("রিডিং fd=%d\n", ফিল্ডস)
if (fildes > 10) tracethis = 1
}
ফাংশন
সিস্টেমট্যাপ স্ক্রিপ্টগুলি সাধারণ কাজগুলিকে ফ্যাক্টর করার জন্য সাবরুটিনগুলিকে সংজ্ঞায়িত করতে পারে। ফাংশন কোন গ্রহণ
স্কেলার (পূর্ণসংখ্যা বা স্ট্রিং) আর্গুমেন্টের সংখ্যা, এবং একটি একক স্কেলার (পূর্ণসংখ্যা) ফেরত দিতে হবে
বা স্ট্রিং)। একটি উদাহরণ ফাংশন ঘোষণা এই মত দেখায়:
ফাংশন thisfn (arg1, arg2) {
ফেরত arg1 + arg2
}
টাইপ ডিক্লারেশনের সাধারণ অনুপস্থিতি লক্ষ্য করুন, যার পরিবর্তে অনুমান করা হয়
অনুবাদক যাইহোক, যদি ইচ্ছা হয়, একটি ফাংশন সংজ্ঞা স্পষ্ট টাইপ অন্তর্ভুক্ত করতে পারে
এর রিটার্ন মান এবং/অথবা এর আর্গুমেন্টের জন্য ঘোষণা। এই জন্য বিশেষভাবে সহায়ক
এমবেডেড-সি ফাংশন। নিম্নলিখিত উদাহরণে, টাইপ ইনফারেন্স ইঞ্জিন শুধুমাত্র অনুমান করতে হবে
arg2 (একটি স্ট্রিং) এর টাইপ।
ফাংশন thatfn:স্ট্রিং (arg1:long, arg2) {
রিটার্ন স্প্রিন্ট(arg1)। arg2
}
একটি নির্দিষ্ট নেস্টিং সীমা পর্যন্ত ফাংশনগুলি অন্যদের বা নিজেদেরকে বারবার কল করতে পারে। এই
সীমাটি অনুবাদ করা C কোডে একটি ম্যাক্রো দ্বারা সংজ্ঞায়িত করা হয়েছে এবং এটি 10-এর কাছাকাছি।
মুদ্রণ
ফাংশন নামের একটি সেট রয়েছে যা অনুবাদক দ্বারা বিশেষভাবে চিকিত্সা করা হয়। তারা
স্ট্যান্ডার্ড সিস্টেমট্যাপ আউটপুট স্ট্রীমে আরও সুবিধাজনকভাবে মুদ্রণের জন্য বিন্যাস মান
উপায় দ্য স্প্রিন্ট* ভেরিয়েন্টগুলি প্রিন্ট করার পরিবর্তে ফরম্যাট করা স্ট্রিং ফিরিয়ে দেয়।
ছাপানো, পূর্ণবেগে দৌড়ান
যে কোনো ধরনের এক বা একাধিক মান প্রিন্ট করুন, সরাসরি একত্রে সংযুক্ত করুন।
মুদ্রণ, sprintln
প্রিন্ট মান মত ছাপানো এবং পূর্ণবেগে দৌড়ান, কিন্তু একটি নতুন লাইন যোগ করুন।
মুদ্রিত, স্প্রিন্ট
একটি স্ট্রিং ডিলিমিটার এবং যেকোনো ধরনের দুই বা ততোধিক মান নিন এবং মানগুলি প্রিন্ট করুন
বিভেদক interposed সঙ্গে. ডিলিমিটার অবশ্যই একটি আক্ষরিক স্ট্রিং ধ্রুবক হতে হবে।
printdln, sprintdln
লাইক ডেলিমিটার দিয়ে মান প্রিন্ট করুন মুদ্রিত এবং স্প্রিন্ট, কিন্তু একটি নতুন লাইন যোগ করুন।
printf,, স্প্রিন্ট
একটি ফর্ম্যাটিং স্ট্রিং এবং সংশ্লিষ্ট প্রকারের মানগুলির একটি সংখ্যা নিন এবং মুদ্রণ করুন
তাদের সব বিন্যাস একটি আক্ষরিক স্ট্রিং ধ্রুবক হতে হবে.
সার্জারির printf, ফরম্যাটিং নির্দেশাবলী সি-এর অনুরূপ, ব্যতীত তারা সম্পূর্ণরূপে টাইপ-
অনুবাদক দ্বারা পরীক্ষা করা হয়েছে:
%b ASCII পাঠ্যের পরিবর্তে প্রদত্ত মানের একটি বাইনারি ব্লব লেখে। প্রস্থ
স্পেসিফায়ার লিখতে বাইট সংখ্যা নির্ধারণ করে; বৈধ স্পেসিফায়ার হল %b
%1b %2b %4b %8b। ডিফল্ট (%b) হল 8 বাইট।
%c অক্ষর।
%d, %i সাইন ইন দশমিক।
%m নিরাপদে প্রদত্ত ঠিকানায় কার্নেল মেমরি পড়ে, এর বিষয়বস্তু বের করে। দ্য
ঐচ্ছিক নির্ভুলতা নির্দিষ্টকারী (ক্ষেত্রের প্রস্থ নয়) এর সংখ্যা নির্ধারণ করে
পড়ার জন্য বাইট - ডিফল্ট হল 1 বাইট। %10.4m একটি মেমরির 4 বাইট প্রিন্ট করে
10-অক্ষর-বিস্তৃত ক্ষেত্র।
%M %m এর মতই, কিন্তু আউটপুট হেক্সাডেসিমেলে। আউটপুট ন্যূনতম আকার হয়
ঐচ্ছিক নির্ভুলতা স্পেসিফায়ার দ্বিগুণ করুন - ডিফল্ট হল 1 বাইট (2 হেক্স অক্ষর)।
%10.4M মেমরির 4 বাইট 8 হেক্সাডেসিমেল অক্ষর হিসাবে মুদ্রণ করে
10-অক্ষর-বিস্তৃত ক্ষেত্র।
%o স্বাক্ষরবিহীন অক্টাল।
%p স্বাক্ষরবিহীন পয়েন্টার ঠিকানা।
%s স্ট্রিং।
%u স্বাক্ষরবিহীন দশমিক।
%x স্বাক্ষরবিহীন হেক্স মান, সমস্ত ছোট হাতের ক্ষেত্রে।
%X স্বাক্ষরবিহীন হেক্স মান, সমস্ত বড় হাতের ক্ষেত্রে।
%% একটি % লেখে।
সার্জারির # পতাকা বিকল্প ফর্ম নির্বাচন করে। অক্টালের জন্য, এটি একটি 0 উপসর্গ। হেক্সের জন্য, এটি
ক্ষেত্রের উপর নির্ভর করে 0x বা 0X উপসর্গ। অক্ষরের জন্য, এটি অ-মুদ্রণ মান এড়িয়ে যায়
হয় C-এর মতো পালানো বা কাঁচা অক্টাল সহ।
উদাহরণ:
a = "এলিস", b = "বব", p = 0x1234abcd, i = 123, j = -1, id[a] = 1234, id[b] = 4567
মুদ্রণ ("হ্যালো")
প্রিন্ট: হ্যালো
println(b)
প্রিন্ট: বব\n
println(a . " is " . পূর্ণবেগে দৌড়ান(16))
প্রিন্ট: এলিস 16
foreach (আইডিতে নাম) printdln("|", strlen(নাম), নাম, আইডি [নাম])
প্রিন্ট: 5|alice|1234\n3|বব|4567
printf("%c হল %s; %x বা %X বা %p; %d বা %u\n",97,a,p,p,p,j,j)
প্রিন্ট: একটি হল এলিস; 1234abcd বা 1234ABCD বা 0x1234abcd; -1 বা 18446744073709551615\n
printf("%p ঠিকানায় কার্নেল বাফারের 2 বাইট: %2m", p, p)
প্রিন্ট: 2x0abcd ঠিকানায় কার্নেল বাফারের 1234 বাইট:
printf("%4b", p)
প্রিন্ট (এই মানগুলি বাইনারি ডেটা হিসাবে): 0x1234abcd
printf("%#o %#x %#X\n", 1, 2, 3)
প্রিন্ট: 01 0x2 0X3
printf("%#c %#c %#c\n", 0, 9, 42)
প্রিন্ট: \000 \t *
পরিসংখ্যান
এটি প্রায়ই এমনভাবে পরিসংখ্যান সংগ্রহ করা বাঞ্ছনীয় যা এর শাস্তি এড়ায়
বারবার একচেটিয়াভাবে গ্লোবাল ভেরিয়েবল লকিং করে সেই সংখ্যাগুলো রাখা হচ্ছে।
Systemtap একটি বিশেষ অপারেটর ব্যবহার করে মান সংগ্রহ করে এবং বেশ কিছু সমাধান প্রদান করে
পরিসংখ্যানগত সমষ্টি বের করার জন্য ছদ্ম-ফাংশন।
সমষ্টি অপারেটর হয় <<, এবং একটি অ্যাসাইনমেন্ট, বা একটি C++ আউটপুট-স্ট্রিমিং এর অনুরূপ
অপারেশন. বাম অপারেন্ড একটি স্কেলার বা অ্যারে-সূচক lvalue নির্দিষ্ট করে, যা হতে হবে
বিশ্বব্যাপী ঘোষিত। ডান অপারেন্ড একটি সংখ্যাসূচক অভিব্যক্তি। অর্থ স্বজ্ঞাত:
পরিসংখ্যান গণনা করতে সংখ্যার স্তূপে প্রদত্ত সংখ্যাটি যোগ করুন। (নির্দিষ্ট তালিকা
সংগ্রহ করার জন্য পরিসংখ্যান আলাদাভাবে দেওয়া হয়, নিষ্কাশন ফাংশন দ্বারা।)
foo <<< 1
পরিসংখ্যান[পিড()] <<< মেমসাইজ
নিষ্কাশন ফাংশন এছাড়াও বিশেষ. একটি স্বতন্ত্র নিষ্কাশন প্রতিটি চেহারা জন্য
একটি প্রদত্ত শনাক্তকারীর উপর অপারেটিং ফাংশন, অনুবাদক একটি সেট গণনা করার ব্যবস্থা করে
পরিসংখ্যান যে এটি সন্তুষ্ট. পরিসংখ্যান ব্যবস্থা তাই "অন-ডিমান্ড"। প্রতিটি মৃত্যুদন্ড
একটি নিষ্কাশন ফাংশন সমস্ত জুড়ে সেই মুহুর্তের জন্য একত্রিতকরণ গণনা করে
প্রসেসর।
এখানে এক্সট্রাক্টর ফাংশন সেট আছে. প্রতিটি প্রথম যুক্তি একই শৈলী
অ্যাকুমুলেট অপারেশনের বাম দিকে lvalue ব্যবহৃত হয়। দ্য @গণনা(v), @সম(v),
@মিন(v), @max(v), @avg(v) এক্সট্রাক্টর ফাংশন গণনা করে
সমস্ত সঞ্চিত মানের সংখ্যা/মোট/সর্বনিম্ন/সর্বোচ্চ/গড়। ফলে মান হয়
সমস্ত সহজ পূর্ণসংখ্যা। সমষ্টিযুক্ত অ্যারেগুলি সাজানো এবং পুনরাবৃত্তি করা যেতে পারে। দেখুন
প্রতিটির জন্য উপরে নির্মাণ।
হিস্টোগ্রামগুলিও উপলব্ধ, তবে আরও জটিল কারণ তাদের একটি ভেক্টর রয়েছে
স্কেলার মানের চেয়ে। @hist_linear(v,start, stop,interval) থেকে একটি রৈখিক হিস্টোগ্রাম প্রতিনিধিত্ব করে
"শুরু" থেকে "থেমে" "ব্যবধান" বৃদ্ধি করে। ব্যবধান ইতিবাচক হতে হবে। একইভাবে,
@hist_log(v) একটি বেস-2 লগারিদমিক হিস্টোগ্রাম উপস্থাপন করে। সঙ্গে একটি হিস্টোগ্রাম মুদ্রণ
ছাপানো ফাংশন ফ্যামিলি একটি হিস্টোগ্রাম অবজেক্টকে একটি ট্যাবুলার "ASCII আর্ট" বার চার্ট হিসাবে রেন্ডার করে।
probe timer.profile {
x[1] <<< পিড()
x[2] <<< uid()
y <<< tid()
}
গ্লোবাল x // সমষ্টি ধারণকারী একটি অ্যারে
বিশ্বব্যাপী y // একটি স্কেলার
তদন্ত শেষ {
foreach ([i] x @count+ এ) {
printf ("x[%d]: গড় %d = যোগফল %d / গণনা %d\n",
i, @avg(x[i]), @sum(x[i]), @count(x[i]))
println (@hist_log(x[i]))
}
println ("y:")
println (@hist_log(y))
}
টাইপকাস্টিং
একবার একটি পয়েন্টার (এর কনটেক্সট ভেরিয়েবলস বিভাগটি দেখুন stapprobes(3stap)) সংরক্ষণ করা হয়েছে
একটি স্ক্রিপ্ট পূর্ণসংখ্যা ভেরিয়েবলের মধ্যে, অনুবাদক প্রয়োজনীয় তথ্য হারায়
যে পয়েন্টার থেকে সদস্যদের অ্যাক্সেস. ব্যবহার করে @কাস্ট() অপারেটর অনুবাদককে বলে কিভাবে করতে হবে
সংখ্যাটিকে একটি টাইপ করা পয়েন্টার হিসাবে ব্যাখ্যা করুন।
@cast(p, "type_name"[, "মডিউল"])->সদস্য
এই ব্যাখ্যা করবে p একটি struct/ইউনিয়ন নামের একটি পয়েন্টার হিসাবে type_name এবং সম্মান
সদস্য মান আরও ->সাবফিল্ড অভিব্যক্তি আরো মাত্রা dereference যোগ করা যেতে পারে.
দ্রষ্টব্য: একই ডিরেফারেন্সিং অপারেটর -> সরাসরি নিয়ন্ত্রণ বা উভয় উল্লেখ করতে ব্যবহৃত হয়
নির্দেশক পরোক্ষ। Systemtap স্বয়ংক্রিয়ভাবে নির্ধারণ করে কোনটি। ঐচ্ছিক মডিউল বলে
অনুবাদক যেখানে এই ধরনের সম্পর্কে তথ্য খুঁজতে হবে। একাধিক মডিউল হতে পারে
সঙ্গে একটি তালিকা হিসাবে নির্দিষ্ট : বিভাজক মডিউল নির্দিষ্ট করা না থাকলে, এটি ডিফল্ট হবে
হয় বামন প্রোবের জন্য প্রোব মডিউলে, অথবা ফাংশনের জন্য "কার্নেল" এবং অন্যান্য সমস্ত
প্রোবের ধরন।
অনুবাদক একটি শিরোনাম দ্বারা বেষ্টিত টাইপ তথ্য সহ তার নিজস্ব মডিউল তৈরি করতে পারে
কোণ বন্ধনী, সাধারণ ডিবাগিনফো উপলব্ধ না হলে। কার্নেল হেডারের জন্য, এটি উপসর্গ
উপযুক্ত বিল্ড সিস্টেম ব্যবহার করতে "কারনেল" সহ। অন্য সব হেডার দিয়ে তৈরি করা হয়
একটি ব্যবহারকারী মডিউলে ডিফল্ট GCC পরামিতি। ক্রমানুসারে একাধিক শিরোনাম নির্দিষ্ট করা যেতে পারে
একটি সহনির্ভরতা সমাধান করতে।
@cast(টিভি, "টাইমভ্যাল", " ")->tv_sec
@cast(টাস্ক, "টাস্ক_স্ট্রাকট", "কার্নেল ")->tgid
@cast(টাস্ক, "টাস্ক_স্ট্রাকট",
"কার্নেল ")->fs->উমাস্ক
দ্বারা অর্জিত মান @কাস্ট দ্বারা চমত্কার-মুদ্রিত হতে পারে $ এবং $$ প্রত্যয় অপারেটর, একই
এর কনটেক্সট ভেরিয়েবল বিভাগে বর্ণিত উপায় stapprobes(3stap) ম্যানুয়াল পৃষ্ঠা।
গুরু মোডে থাকাকালীন, অনুবাদক স্ক্রিপ্টগুলিকে সদস্যদের নতুন মান নির্ধারণ করার অনুমতি দেবে
টাইপকাস্টেড পয়েন্টার।
টাইপকাস্টিং এর ক্ষেত্রেও উপকারী অকার্যকর* সদস্যদের যার ধরন নির্ধারণযোগ্য হতে পারে
রানটাইম
probe foo {
যদি ($var->টাইপ == 1) {
মান = @cast($var->ডেটা, "টাইপ1")->বার
} অন্য {
মান = @cast($var->ডেটা, "টাইপ2")->বাজ
}
মুদ্রণ(মূল্য)
}
এমবেডড C
গুরু মোডে থাকাকালীন, অনুবাদক স্ক্রিপ্টের শীর্ষ স্তরে এমবেডেড কোড গ্রহণ করে।
এই ধরনের কোড মধ্যে আবদ্ধ করা হয় %{ এবং %} চিহ্নিতকারী, এবং শব্দার্থে প্রতিলিপি করা হয়, ছাড়া
বিশ্লেষণ, কিছু ক্রমানুসারে, জেনারেট করা C কোডের শীর্ষ স্তরে। একেবারে বাইরের দিকে
স্তর, এই যোগ করার জন্য দরকারী হতে পারে # অন্তর্ভুক্ত নির্দেশাবলী, এবং এর জন্য কোনো সহায়ক সংজ্ঞা
অন্যান্য এমবেডেড কোড দ্বারা ব্যবহার করুন।
আরেকটি জায়গা যেখানে এমবেডেড কোড অনুমোদিত তা হল একটি ফাংশন বডি। এই ক্ষেত্রে, দ
স্ক্রিপ্ট ল্যাঙ্গুয়েজ বডি সম্পূর্ণভাবে প্রতিস্থাপিত হয় সি কোডের একটি টুকরো দ্বারা আবার এর মধ্যে আবদ্ধ %{
এবং %} চিহ্নিতকারী এই সি কোড যুক্তিসঙ্গত এবং নিরাপদ কিছু করতে পারে। একটি সংখ্যা আছে
পারমাণবিকতা, একযোগে, সম্পদের উপর অনথিভুক্ত কিন্তু জটিল নিরাপত্তা সীমাবদ্ধতা
খরচ, এবং চালানোর সময় সীমা, তাই এটি একটি উন্নত কৌশল।
ইনপুট এবং আউটপুট মানগুলির জন্য আলাদা করা মেমরি অবস্থানগুলি এটি ব্যবহার করে উপলব্ধ করা হয়
ম্যাক্রো STAP_ARG_* এবং STAP_RETVALUE. STAP_ERROR দিয়ে ত্রুটি সংকেত হতে পারে। আউটপুট হতে পারে
STAP_PRINTF দিয়ে লেখা হবে। ফাংশনটি STAP_RETURN এর সাথে তাড়াতাড়ি ফিরে আসতে পারে৷ এখানে
কিছু উদাহরণ:
ফাংশন integer_ops (val) %{
STAP_PRINTF("%d\n", STAP_ARG_val);
STAP_RETVALUE = STAP_ARG_val + 1;
যদি (STAP_RETVALUE == 4)
STAP_ERROR("ভুল অনুমান: %d", (int) STAP_RETVALUE);
যদি (STAP_RETVALUE == 3)
STAP_RETURN(২০১১);
STAP_RETVALUE ++;
%}
ফাংশন string_ops (val) %{
strlcpy (STAP_RETVALUE, STAP_ARG_val, MAXSTRINGLEN);
strlcat (STAP_RETVALUE, "এক", MAXSTRINGLEN);
যদি (strcmp (STAP_RETVALUE, "তিন-দুই-এক"))
STAP_RETURN("প্যারামিটার তিন-দুই-" হওয়া উচিত);
%}
ফাংশন no_ops () %{
STAP_RETURN(); /* কোন রিটার্ন মান ছাড়াই ফাংশন অনুমান করা হয়েছে */
%}
ফাংশন আর্গুমেন্ট এবং রিটার্ন মানের প্রকারগুলি অনুবাদকের দ্বারা অনুমান করা উচিত
এই কাজ করার জন্য কল সাইট. ব্যবহারকারীর উত্পন্ন সি কোড পরীক্ষা করা উচিত
সামঞ্জস্যপূর্ণ এমবেডেড-সি লেখার জন্য সাধারণ স্ক্রিপ্ট-ভাষা ফাংশন।
শেষ স্থান যেখানে এমবেডেড কোড অনুমোদিত একটি এক্সপ্রেশন rvalue হিসাবে। এক্ষেত্রে,
C কোড এর মধ্যে আবদ্ধ %{ এবং %} মার্কার একটি সাধারণ অভিব্যক্তি হিসাবে ব্যাখ্যা করা হয়
মান মার্কার না থাকলে এটি একটি সাধারণ 64-বিট স্বাক্ষরিত সংখ্যা বলে ধরে নেওয়া হয় /* স্ট্রিং */
অন্তর্ভুক্ত করা হয়, যে ক্ষেত্রে এটি একটি স্ট্রিং হিসাবে বিবেচিত হয়।
ফাংশন add_one (val) {
রিটার্ন ভ্যাল + %{ 1 %}
}
ফাংশন add_string_two (val) {
রিটার্ন ভ্যাল %{ /* স্ট্রিং */ "দুই" %}
}
এমবেডেড-সি কোডে অপ্টিমাইজেশান এবং নিরাপত্তা বৈশিষ্ট্য জাহির করার জন্য মার্কার থাকতে পারে।
/* বিশুদ্ধ */
এর মানে হল যে সি কোডের কোন পার্শ্বপ্রতিক্রিয়া নেই এবং এর মান থাকলে সম্পূর্ণরূপে বাদ দেওয়া যেতে পারে
স্ক্রিপ্ট কোড দ্বারা ব্যবহৃত হয় না.
/* স্থিতিশীল */
মানে C কোডের সর্বদা একই মান থাকে (যে কোনো প্রোব হ্যান্ডলারে
আমন্ত্রণ), তাই বারবার কল করা স্বয়ংক্রিয়ভাবে মেমোাইজ করা মান দ্বারা প্রতিস্থাপিত হতে পারে।
এই ধরনের ফাংশন কোন প্যারামিটার নিতে হবে, এবং হতে হবে বিশুদ্ধ.
/* সুবিধাহীন */
এর অর্থ হল সি কোডটি এতটাই নিরাপদ যে এমনকি সুবিধাবঞ্চিত ব্যবহারকারীরাও ব্যবহার করতে পারবেন
এটা.
/* myproc-অসুবিধাহীন */
এর অর্থ হল সি কোডটি এতটাই নিরাপদ যে এমনকি সুবিধাবঞ্চিত ব্যবহারকারীরাও ব্যবহার করতে পারবেন
এটি, যদি বর্তমান অনুসন্ধানের লক্ষ্য ব্যবহারকারীর নিজস্ব প্রক্রিয়ার মধ্যে থাকে।
/* গুরু */
এর মানে হল যে C কোডটি এতটাই অনিরাপদ যে একজন systemtap ব্যবহারকারীকে অবশ্যই উল্লেখ করতে হবে -g (গুরু
মোড) এটি ব্যবহার করতে।
/* unmangled */
একটি এমবেডেড-সি ফাংশনে, মানে হল লিগ্যাসি (প্রি-1.8) আর্গুমেন্ট অ্যাক্সেস সিনট্যাক্স
ফাংশন ভিতরে উপলব্ধ করা উচিত. অতএব, ছাড়াও STAP_ARG_foo
এবং STAP_RETVALUE একজন ব্যবহার করতে পারেন এই->foo এবং এই->__retvalue যথাক্রমে ভিতরে
কাজ. SystemTap-এর জন্য লেখা কোড দ্রুত স্থানান্তর করার জন্য এটি কার্যকর
সংস্করণ 1.7 এবং তার আগের।
/* unmodified-fnargs */
একটি এমবেডেড-সি ফাংশনে, মানে ফাংশন আর্গুমেন্ট পরিবর্তন করা হয় না
ফাংশন শরীরের ভিতরে.
/* স্ট্রিং */
শুধুমাত্র এমবেডেড-সি এক্সপ্রেশনে, মানে এক্সপ্রেশন আছে const গৃহস্থালির কাজ * টাইপ এবং
ডিফল্ট দীর্ঘ সংখ্যার পরিবর্তে একটি স্ট্রিং মান হিসাবে গণ্য করা উচিত।
বিল্ট-ইনস
বিল্টইন প্রোব পয়েন্ট উপনামের একটি সেট ইনস্টল করা স্ক্রিপ্ট দ্বারা প্রদান করা হয়
ডিরেক্টরিতে উল্লেখ করা হয়েছে স্ট্যাপাথ(7) ম্যানুয়াল পৃষ্ঠা। ফাংশন বর্ণনা করা হয়
stapprobes(3stap) ম্যানুয়াল পৃষ্ঠা।
প্রসেসিং
অনুবাদক প্রদত্ত ইনপুট স্ক্রিপ্ট এবং সমস্ত স্ক্রিপ্ট (ফাইল) পার্স করে পাস 1 শুরু করে
নামে *.stp) একটি ট্যাপসেট ডিরেক্টরিতে পাওয়া যায়। সঙ্গে তালিকাভুক্ত ডিরেক্টরি -I মধ্যে প্রক্রিয়া করা হয়
ক্রম, প্রতিটি "গুরু মোডে" প্রক্রিয়া করা হয়। প্রতিটি ডিরেক্টরির জন্য, অনেকগুলি সাবডিরেক্টরি
এছাড়াও অনুসন্ধান করা হয়. এই সাবডিরেক্টরিগুলি নির্বাচিত কার্নেল সংস্করণ থেকে উদ্ভূত হয়েছে (
-R বিকল্প), যাতে আরো কার্নেল-সংস্করণ-নির্দিষ্ট স্ক্রিপ্ট কম ওভাররাইড করতে পারে
নির্দিষ্ট বেশী উদাহরণস্বরূপ, একটি কার্নেল সংস্করণের জন্য 2.6.12-23.FC3 নিম্নলিখিত নিদর্শন
ক্রমানুসারে অনুসন্ধান করা হবে: 2.6.12-23.FC3/*.stp, 2.6.12/*.stp, 2.6/*.stp, এবং পরিশেষে
*.stp. পাস 1 এর পরে অনুবাদককে থামানোর ফলে এটি পার্স ট্রি মুদ্রণ করে।
পাস 2-এ, অনুবাদক চিহ্ন এবং প্রকারগুলি সমাধান করতে ইনপুট স্ক্রিপ্ট বিশ্লেষণ করে।
অভ্যন্তরীণভাবে অমীমাংসিত ভেরিয়েবল, ফাংশন এবং প্রোবের উপনামের রেফারেন্সগুলি হল
পার্স করা ট্যাপসেট স্ক্রিপ্ট ফাইলের মাধ্যমে অনুসন্ধান করে সন্তুষ্ট। যদি কোন ট্যাপসেট স্ক্রিপ্ট ফাইল
নির্বাচিত হয়েছে কারণ এটি একটি অমীমাংসিত প্রতীক সংজ্ঞায়িত করে, তারপর সেই ফাইলটির সম্পূর্ণতা
অনুবাদকের রেজোলিউশন সারিতে যোগ করা হয়েছে। সমস্ত প্রতীক না হওয়া পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি হয়
সমাধান করা হয়েছে এবং ট্যাপসেট স্ক্রিপ্ট ফাইলগুলির একটি উপসেট নির্বাচন করা হয়েছে।
এর পরে, সমস্ত প্রোব পয়েন্টের বিবরণগুলি দ্বারা সমর্থিত বিস্তৃত বৈচিত্র্যের বিরুদ্ধে যাচাই করা হয়
অনুবাদক প্রোব পয়েন্ট যা কোড অবস্থানগুলিকে নির্দেশ করে ("সিঙ্ক্রোনাস প্রোব পয়েন্ট")
ইনস্টল করার জন্য উপযুক্ত কার্নেল ডিবাগিং তথ্য প্রয়োজন। সংশ্লিষ্ট মধ্যে
প্রোব হ্যান্ডলার, টার্গেট-সাইড ভেরিয়েবল (যাদের নাম "$" দিয়ে শুরু হয়) পাওয়া যায় এবং আছে
তাদের রান-টাইম অবস্থানগুলি ডিকোড করা হয়েছে৷
এর পরে, সমস্ত প্রোব এবং ফাংশনগুলি অপ্টিমাইজেশানের সুযোগের জন্য বিশ্লেষণ করা হয়
ভেরিয়েবল, এক্সপ্রেশন এবং ফাংশনগুলি সরিয়ে ফেলুন যেগুলির কোনও দরকারী মান নেই এবং কোনও পার্শ্ব-প্রতিক্রিয়া নেই।
এমবেডেড-সি ফাংশনগুলির পার্শ্ব-প্রতিক্রিয়া আছে বলে ধরে নেওয়া হয় যদি না তারা জাদু স্ট্রিং অন্তর্ভুক্ত করে
/* বিশুদ্ধ */. যেহেতু এই অপ্টিমাইজেশানটি গোপন কোডের ত্রুটি যেমন ধরন অমিলগুলিকে আড়াল করতে পারে৷
অথবা অবৈধ $context ভেরিয়েবল, এটি কখনও কখনও অপ্টিমাইজেশান নিষ্ক্রিয় করতে দরকারী হতে পারে
সাথে -u বিকল্প।
অবশেষে, সমস্ত ভেরিয়েবল, ফাংশন, প্যারামিটার, অ্যারে এবং সূচকের ধরন থেকে অনুমান করা হয়
প্রসঙ্গ (আক্ষরিক এবং অপারেটর)। 2 পাসের পরে অনুবাদককে থামানোর ফলে এটি তালিকাভুক্ত হয়
সমস্ত অনুমানকৃত প্রকার সহ সমস্ত প্রোব, ফাংশন এবং ভেরিয়েবল। কোন অসঙ্গতি
বা অমীমাংসিত প্রকারগুলি একটি ত্রুটি সৃষ্টি করে।
পাস 3-এ, অনুবাদক সি কোড লেখেন যা সমস্ত নির্বাচিত স্ক্রিপ্টের ক্রিয়াগুলিকে প্রতিনিধিত্ব করে
ফাইল, এবং একটি তৈরি করে Makefile নামক এটি একটি কার্নেল অবজেক্টে তৈরি করতে। এই ফাইল স্থাপন করা হয়
একটি অস্থায়ী ডিরেক্টরিতে। এই সময়ে অনুবাদককে থামানোর ফলে এটি প্রিন্ট করতে পারে
সি ফাইলের বিষয়বস্তু।
পাস 4-এ, অনুবাদক প্রকৃত তৈরি করতে লিনাক্স কার্নেল বিল্ড সিস্টেমকে আহ্বান করে
কার্নেল অবজেক্ট ফাইল। এই দৌড় জড়িত করা অস্থায়ী ডিরেক্টরিতে, এবং একটি প্রয়োজন
কার্নেল মডিউল বিল্ড সিস্টেম (হেডার, কনফিগার এবং মেকফাইলস) স্বাভাবিকভাবে ইনস্টল করতে হবে
অকুস্থল /lib/modules/VERSION/build. 4 পাসের পর অনুবাদককে থামানো শেষ সুযোগ
কার্নেল অবজেক্ট চালানোর আগে। আপনি যদি ফাইলটি সংরক্ষণ করতে চান তবে এটি কার্যকর হতে পারে।
পাস 5-এ, অনুবাদক সিস্টেমট্যাপ অক্জিলিয়ারী প্রোগ্রাম চালু করে staprun জন্য প্রোগ্রাম
প্রদত্ত কার্নেল বস্তু। এই প্রোগ্রামটি মডিউলটি লোড করার ব্যবস্থা করে তারপর এটির সাথে যোগাযোগ করে,
কার্নেল থেকে অস্থায়ী ফাইলগুলিতে ট্রেস ডেটা অনুলিপি করা হচ্ছে, যতক্ষণ না ব্যবহারকারী একটি বাধা না পাঠায়
সংকেত প্রোব হ্যান্ডলারদের দ্বারা কোনো রান-টাইম ত্রুটির সম্মুখীন হয়, যেমন ফুরিয়ে যাওয়া
মেমরি, শূন্য দ্বারা বিভাজন, নেস্টিং বা রানটাইম সীমা অতিক্রম করা, একটি নরম ত্রুটির ফলাফল
ইঙ্গিত. পরবর্তী সমস্ত প্রোবের MAXERRORS ব্লকের বেশি নরম ত্রুটি (ব্যতীত
ত্রুটি-হ্যান্ডলিং প্রোব) এবং সেশনটি বন্ধ করুন। অবশেষে, staprun মডিউল আনলোড করে,
এবং পরিষ্কার করে।
অস্বাভাবিক অবসান
একজনের জোর করে স্ট্যাপ প্রক্রিয়াটিকে হত্যা করা এড়ানো উচিত, উদাহরণস্বরূপ সিগকিলের সাথে, কারণ
stapio প্রক্রিয়া (স্ট্যাপ প্রক্রিয়ার একটি শিশু প্রক্রিয়া) এবং লোড করা মডিউল বাকি থাকতে পারে
সিস্টেমে চলমান। যদি এটি ঘটে থাকে, বাকি যে কোনো স্ট্যাপিওতে SIGTERM বা SIGINT পাঠান
প্রসেস, তারপর systemtap মডিউল আনলোড করতে rmmod ব্যবহার করুন।
উদাহরণ
দেখ স্টেপেক্স(3stap) নমুনার সংক্ষিপ্ত সংগ্রহের জন্য ম্যানুয়াল পৃষ্ঠা, বা একটি বড় সেট
systemtap ডকুমেন্টেশন/testsuite ডিরেক্টরির অধীনে ইনস্টল করা নমুনা। দেখা
স্ট্যাপাথসিস্টেমে এইগুলির সম্ভাব্য অবস্থানের জন্য (7stap)।
ক্যাচিং
সিস্টেমট্যাপ অনুবাদক পাস 3 আউটপুট (উত্পন্ন সি কোড) এবং পাস 4 ক্যাশ করে
পাস 4 সফলভাবে সম্পন্ন হলে আউটপুট (সংকলিত কার্নেল মডিউল)। এই ক্যাশে আউটপুট
একই স্ক্রিপ্ট আবার অনুবাদ করা হলে একই অবস্থা অনুমান করে পুনরায় ব্যবহার করা হয় (একই
কার্নেল সংস্করণ, একই সিস্টেমট্যাপ সংস্করণ, ইত্যাদি)। ক্যাশে ফাইল সংরক্ষণ করা হয়
$SYSTEMTAP_DIR/ক্যাশে ডিরেক্টরি ফাইল থাকার দ্বারা ক্যাশে সীমিত করা যেতে পারে ক্যাশে_এমবি_সীমা
ক্যাশে ডিরেক্টরিতে রাখা হয়েছে (উপরে দেখানো হয়েছে) শুধুমাত্র একটি ASCII পূর্ণসংখ্যা উপস্থাপন করে
ক্যাশে কত MiB অতিক্রম করা উচিত নয়. এই ফাইলের অনুপস্থিতিতে, একটি ডিফল্ট হবে
256MiB সীমা সেট করে তৈরি করা হয়েছে। এটি একটি 'নরম' সীমা যে ক্যাশে হবে
ক্যাশে পরিষ্কার ব্যবধান অতিক্রম করা হলে একটি নতুন এন্ট্রি যোগ করার পরে পরিষ্কার করা হয়, তাই মোট
ক্যাশে আকার সাময়িকভাবে এই সীমা অতিক্রম করতে পারে. এই ব্যবধান থাকার দ্বারা নির্দিষ্ট করা যেতে পারে
ফাইল cache_clean_interval_s ক্যাশে ডিরেক্টরিতে স্থাপন করা হয়েছে (উপরে দেখানো হয়েছে) যেখানে শুধুমাত্র একটি রয়েছে
ASCII পূর্ণসংখ্যা সেকেন্ডে ব্যবধানের প্রতিনিধিত্ব করে। এই ফাইলের অনুপস্থিতিতে, একটি ডিফল্ট
300 সেকেন্ডে ব্যবধান সেট করে তৈরি করা হবে।
নিরাপত্তা এবং নিরাপত্তা
Systemtap একটি শক্তিশালী প্রশাসনিক সরঞ্জাম হিসাবে ব্যবহার করা যেতে পারে। এটি কার্নেলের অভ্যন্তরীণ প্রকাশ করতে পারে
ডেটা স্ট্রাকচার এবং সম্ভাব্য ব্যক্তিগত ব্যবহারকারীর তথ্য। (ভিতরে dyninst রানটাইম মোড, এই
ব্যাপার না, দেখুন একান্তর রানটাইমস নীচের বিভাগ।)
অনুবাদক সংকলনের সময় অনেক নিরাপত্তা সীমাবদ্ধতা এবং রান চলাকালীন আরও অনেক কিছুর কথা বলে।
সময় এটা নিশ্চিত করা যে কোন হ্যান্ডলার রুটিন খুব দীর্ঘ জন্য চলতে পারে না, সীমাহীন বরাদ্দ
মেমরি, অনিরাপদ ক্রিয়াকলাপ সঞ্চালন, বা অনিচ্ছাকৃতভাবে সিস্টেমে হস্তক্ষেপ। ব্যবহারসমূহ
স্ক্রিপ্ট গ্লোবাল ভেরিয়েবল স্বয়ংক্রিয়ভাবে পড়া/লিখতে যথাযথভাবে লক করা হয়, রক্ষা করার জন্য
সমবর্তী প্রোব হ্যান্ডলারদের দ্বারা ম্যানিপুলেশনের বিরুদ্ধে। (সময়সীমার সাথে অচলাবস্থা সনাক্ত করা হয়।
ব্যবহার -t অত্যধিক লক বিতর্কের রিপোর্ট পেতে পতাকা।) এর সাথে পরীক্ষা করা হচ্ছে
স্ক্রিপ্ট তাই সাধারণত নিরাপদ. গুরু-মোড -g বিকল্পটি প্রশাসকদের অনুমতি দেয়
বেশিরভাগ নিরাপত্তা ব্যবস্থা বাইপাস, যা আক্রমণাত্মক বা রাষ্ট্র-পরিবর্তন ক্রিয়াকলাপকে অনুমতি দেয়,
এমবেডেড-সি কোড, এবং বিপর্যয়ের ঝুঁকি বাড়ায়। ডিফল্টরূপে, ওভারলোড প্রতিরোধ হয়
সমস্ত মডিউলের জন্য চালু করা হয়েছে। আপনি ওভারলোড প্রক্রিয়াকরণ নিষ্ক্রিয় করতে চান, ব্যবহার করুন
-- দমন-সময়-সীমা বিকল্প।
চালানোর সময় ধরা পড়া ত্রুটিগুলি সাধারণত একটি পরিষ্কার স্ক্রিপ্ট বন্ধ করে দেয় এবং একটি পাস-5 হয়৷
ভুল বার্তা. দ্য --দমন-হ্যান্ডলার-ত্রুটি বিকল্পটি স্ক্রিপ্টগুলিকে নরম ত্রুটি সহ্য করতে দেয়
বন্ধ না করে।
অনুমতিগুলি
সাধারণ linux-kernel-module রানটাইমের জন্য, কার্নেল অবজেক্ট চালানোর জন্য systemtap বিল্ড, একটি
ব্যবহারকারীকে অবশ্যই নিম্নলিখিতগুলির মধ্যে একজন হতে হবে:
রুট ব্যবহারকারী;
এর একজন সদস্য stapdev এবং stapusr দল
এর একজন সদস্য স্ট্যাপসি এবং stapusr দল বা
এর একজন সদস্য stapusr গ্রুপ।
রুট ব্যবহারকারী বা ব্যবহারকারী উভয়েরই সদস্য stapdev এবং stapusr গ্রুপ তৈরি করতে পারে
এবং যেকোনো সিস্টেমট্যাপ স্ক্রিপ্ট চালান।
একজন ব্যবহারকারী যিনি উভয়েরই সদস্য স্ট্যাপসি এবং stapusr গোষ্ঠীগুলি শুধুমাত্র পূর্ব-নির্মিত ব্যবহার করতে পারে
নিম্নলিখিত অবস্থার অধীনে মডিউল:
মডিউলটি একজন বিশ্বস্ত স্বাক্ষরকারী দ্বারা স্বাক্ষরিত হয়েছে। বিশ্বস্ত স্বাক্ষরকারীরা সাধারণত সিস্টেমট্যাপ হয়
কম্পাইল-সার্ভার যা মডিউল স্বাক্ষর করে যখন -- বিশেষাধিকার বিকল্প দ্বারা নির্দিষ্ট করা হয়
ক্লায়েন্ট দেখুন স্ট্যাপ সার্ভার(8) আরও তথ্যের জন্য ম্যানুয়াল পৃষ্ঠা।
· মডিউলটি ব্যবহার করে নির্মিত হয়েছিল --privilege=stapsys অথবা --privilege=stapusr অপশন।
শুধুমাত্র সদস্যদের stapusr গ্রুপ শুধুমাত্র নিম্নলিখিত অধীনে পূর্ব-নির্মিত মডিউল ব্যবহার করতে পারে
শর্তাবলী:
মডিউলটি /lib/modules/VERSION/systemtap ডিরেক্টরিতে অবস্থিত। এই ডিরেক্টরি
মূলের মালিকানাধীন হতে হবে এবং বিশ্ব লিখনযোগ্য হতে হবে না।
or
মডিউলটি একজন বিশ্বস্ত স্বাক্ষরকারী দ্বারা স্বাক্ষরিত হয়েছে। বিশ্বস্ত স্বাক্ষরকারীরা সাধারণত সিস্টেমট্যাপ হয়
কম্পাইল-সার্ভার যা মডিউল স্বাক্ষর করে যখন -- বিশেষাধিকার বিকল্প দ্বারা নির্দিষ্ট করা হয়
ক্লায়েন্ট দেখুন স্ট্যাপ সার্ভার(8) আরও তথ্যের জন্য ম্যানুয়াল পৃষ্ঠা।
মডিউলটি --privilege=stapusr বিকল্প ব্যবহার করে তৈরি করা হয়েছে।
কার্নেল মডিউল দ্বারা উত্পন্ন স্ট্যাপ প্রোগ্রাম দ্বারা পরিচালিত হয় staprun কার্যক্রম. পরেরটি
সিস্টেমট্যাপ প্যাকেজের একটি অংশ, মডিউল লোডিং এবং আনলোড করার জন্য নিবেদিত (কিন্তু শুধুমাত্র
সাদা অঞ্চল), এবং কার্নেল থেকে ব্যবহারকারী ডেটা স্থানান্তর। থেকে staprun কোনো কাজ করে না
কার্নেল অবজেক্টের উপর অতিরিক্ত নিরাপত্তা চেক এটি দেওয়া হয়, এটি একটি জন্য অনুচিত হবে
সিস্টেম অ্যাডমিনিস্ট্রেটর অবিশ্বস্ত ব্যবহারকারীদের যোগ করতে stapdev or stapusr গোষ্ঠী।
নিরাপদ বুট
বর্তমান সিস্টেমে UEFI ফার্মওয়্যারে SecureBoot চালু থাকলে, সমস্ত কার্নেল মডিউল
স্বাক্ষর করতে হবে। (কিছু কার্নেল a দিয়ে বুট করার অনেক পরে সিকিউরবুট নিষ্ক্রিয় করার অনুমতি দিতে পারে
কী সিকোয়েন্স যেমন SysRq-X, মডিউল সাইন করার জন্য এটি অপ্রয়োজনীয় করে তোলে।) সিস্টেমট্যাপ
কম্পাইল সার্ভার একটি MOK (মেশিন মালিক কী) দিয়ে মডিউল সাইন করতে পারে যার সাথে এর মিল রয়েছে
একটি ক্লায়েন্ট সিস্টেম। আরো বিস্তারিত জানার জন্য নিম্নলিখিত উইকি পাতা দেখুন:
https://sourceware.org/systemtap/wiki/SecureBoot
সম্পদ সীমা
অনেক সম্পদ ব্যবহারের সীমা তৈরি করা C কোডে ম্যাক্রো দ্বারা সেট করা হয়। এগুলো হতে পারে
দিয়ে ওভাররাইড করা হয়েছে -D পতাকা এগুলির একটি নির্বাচন নিম্নরূপ:
ম্যাক্সনেস্টিং
নেস্টেড ফাংশন কলের সর্বাধিক সংখ্যা। ডিফল্ট স্ক্রিপ্ট বিশ্লেষণ দ্বারা নির্ধারিত,
পুনরাবৃত্ত স্ক্রিপ্টের জন্য একটি বোনাস 10 স্লট যোগ করা হয়েছে।
MAXSTRINGLEN
স্ট্রিংয়ের সর্বোচ্চ দৈর্ঘ্য, ডিফল্ট 128।
ম্যাক্সট্রিলক
ঘোষণা করার আগে গ্লোবাল ভেরিয়েবলে লকের জন্য অপেক্ষা করার জন্য সর্বাধিক সংখ্যক পুনরাবৃত্তি
সম্ভাব্য অচলাবস্থা এবং প্রোব এড়িয়ে যাওয়া, ডিফল্ট 1000।
MAXACTION
যে কোনো একক প্রোব হিট চলাকালীন সর্বোচ্চ সংখ্যক স্টেটমেন্ট চালানো হবে (এর সাথে
interrupts নিষ্ক্রিয়), ডিফল্ট 1000। মনে রাখবেন যে সরাসরি-থ্রু প্রোব হ্যান্ডলারের জন্য
অপ্টিমাইজেশানের কারণে লুপ বা পুনরাবৃত্তির অভাব, এই প্যারামিটারটি ব্যাখ্যা করা যেতে পারে
খুব রক্ষণশীলভাবে।
MAXACTION_INTERRUPTIBLE
যে কোনো একক প্রোব হিট চলাকালীন নির্বাহ করার জন্য সর্বোচ্চ সংখ্যক স্টেটমেন্ট
ইন্টারাপ্ট সক্রিয় (যেমন শুরু/শেষ প্রোব), ডিফল্ট (MAXACTION *
10).
ম্যাক্সব্যাকট্রেস
স্ট্যাপ রানটাইম দ্বারা প্রক্রিয়া করা হবে এমন স্ট্যাক ফ্রেমের সর্বাধিক সংখ্যা
[u]context-unwind.stp-এ ব্যাকট্রেস ফাংশন দ্বারা উত্পাদিত হিসাবে unwinder
ট্যাপসেট, ডিফল্ট 20।
MAXMAPENTRIES
যেকোনো একক গ্লোবাল অ্যারেতে ডিফল্ট সর্বোচ্চ সংখ্যক সারি, ডিফল্ট 2048।
স্বতন্ত্র অ্যারেগুলি পরিবর্তে একটি বড় বা ছোট সীমার সাথে ঘোষণা করা যেতে পারে:
বিশ্বব্যাপী বড়[10000], সামান্য[5]
অথবা দিয়ে চিহ্নিত করা হয়েছে % স্বয়ংক্রিয়ভাবে তাদের মোড়ানো করতে.
MAXERRORS
প্রস্থান ট্রিগার হওয়ার আগে সর্বাধিক সংখ্যক নরম ত্রুটি, ডিফল্ট 0, যার অর্থ
যে প্রথম ত্রুটিটি স্ক্রিপ্ট থেকে প্রস্থান করবে। সঙ্গে যে নোট করুন
--দমন-হ্যান্ডলার-ত্রুটি বিকল্প, এই সীমা বলবৎ করা হয় না.
সর্বোচ্চ এড়িয়ে যাওয়া
এক্সিট ট্রিগার হওয়ার আগে সর্বাধিক সংখ্যক বাদ দেওয়া প্রোব, ডিফল্ট 100। চলমান
-t (টাইমিং) মোড সহ systemtap এড়িয়ে যাওয়া প্রোব সম্পর্কে আরও বিশদ বিবরণ দেয়। সঙ্গে
ডিফল্ট -DINTERRUPTIBLE=1 সেটিং, পুনঃপ্রবেশের কারণে এড়িয়ে যাওয়া প্রোবগুলি নয়
এই সীমা বিরুদ্ধে সঞ্চিত. সঙ্গে যে নোট করুন --দমন-হ্যান্ডলার-ত্রুটি
বিকল্প, এই সীমা বলবৎ করা হয় না.
মিন্সট্যাকস্পেস
একটি প্রোব হ্যান্ডলার চালানোর জন্য ন্যূনতম সংখ্যক ফ্রি কার্নেল স্ট্যাক বাইটের প্রয়োজন,
ডিফল্ট 1024. এই সংখ্যাটি প্রোব হ্যান্ডলারের নিজের জন্য যথেষ্ট বড় হওয়া উচিত
প্রয়োজন, প্লাস একটি নিরাপত্তা মার্জিন।
MAXUPROBES
একযোগে সশস্ত্র ব্যবহারকারী-স্পেস অনুসন্ধানের সর্বাধিক সংখ্যা (উপ্রোব), কিছুটা ডিফল্ট
স্ক্রিপ্টে নাম দেওয়া ইউজার-স্পেস প্রোব পয়েন্টের সংখ্যার চেয়ে বড়। এই পুল
সম্ভাব্য বড় হওয়া প্রয়োজন কারণ পৃথক আপরোব অবজেক্ট (প্রায় 64 বাইট
প্রতিটি) প্রতিটি ম্যাচিং স্ক্রিপ্ট-স্তরের প্রোবের জন্য প্রতিটি প্রক্রিয়ার জন্য বরাদ্দ করা হয়।
STP_MAXMEMORY
সিস্টেমট্যাপ মডিউল ব্যবহার করা উচিত সর্বাধিক মেমরির পরিমাণ (কিলোবাইটে),
ডিফল্ট সীমাহীন। মেমরি আকার মডিউল নিজেই আকার অন্তর্ভুক্ত, প্লাস
কোনো অতিরিক্ত বরাদ্দ। এটি শুধুমাত্র systemtap দ্বারা সরাসরি বরাদ্দ ট্র্যাক করে
রানটাইম এটি পরোক্ষ বরাদ্দ ট্র্যাক করে না (যেমন kprobes/uprobes/etc দ্বারা করা হয়েছে।
অভ্যন্তরীণ)।
STP_OVEROAD_THRESHOLD, STP_OVERLOAD_INTERVAL
প্রদত্ত ব্যবধানে যেকোন সিপিইউতে প্রোবগুলিতে ব্যয় করা মেশিন চক্রের সর্বাধিক সংখ্যা,
একটি ওভারলোড শর্ত ঘোষণা করার আগে এবং স্ক্রিপ্টটি বন্ধ হয়ে যায়। ডিফল্ট
500 মিলিয়ন এবং 1 বিলিয়ন, যাতে স্ট্যাপ স্ক্রিপ্ট সিপিইউ ব্যবহার সীমিত করা যায়
50%।
STP_PROCFS_BUFSIZE
procf প্রোবের সাইজ রিড বাফার (বাইটে)। ডিফল্ট থেকে MAXSTRINGLEN. এই
procfs রিড প্রোব ব্যবহার করে প্রতি-procfs ফাইলের ভিত্তিতে মান ওভাররাইড করা যেতে পারে
.maxsize(MAXSIZE) প্যারামিটার।
যে কোনো ইন্টারাপ্ট পাথে প্রোব ধারণ করে এমন স্ক্রিপ্টের সাথে এটি সম্ভব
অন্য প্রোব হ্যান্ডলারের মাঝখানে বাধা হতে পারে। বিঘ্নিত তদন্ত
পুনঃপ্রবেশ এড়াতে এই ক্ষেত্রে হ্যান্ডলারকে বাদ দেওয়া হবে। এই সমস্যা সমাধানের জন্য,
অপশন সহ stap এক্সিকিউট করুন -বিঘ্নিত=0 পুরো প্রোব জুড়ে বাধা মাস্ক করতে
হ্যান্ডলার এটি প্রোবের সাথে কিছু অতিরিক্ত ওভারহেড যোগ করে, তবে এটি পুনরায় প্রবেশ রোধ করতে পারে
সাধারণ সমস্যার ক্ষেত্রে। যাইহোক, NMI হ্যান্ডলার এবং স্ট্যাপের কলপাথে প্রোব
পুনরায় প্রবেশের কারণে রানটাইম এখনও এড়িয়ে যেতে পারে।
একাধিক স্ক্রিপ্ট একসাথে রিলে বাফারে ডেটা লিখতে পারে। একটি হোস্ট স্ক্রিপ্ট প্রদান করে
গেস্ট স্ক্রিপ্টে এর রিলে বাফার অ্যাক্সেস করার জন্য একটি ইন্টারফেস। তারপর, আউটপুট
অতিথিদের হোস্টের আউটপুটে একত্রিত করা হয়। হোস্ট হিসাবে একটি স্ক্রিপ্ট চালানোর জন্য, স্ট্যাপ চালান
সঙ্গে -ড্রেলেহোস্ট[=নাম] বিকল্প। দ্য নাম বেশ কয়েকটি হোস্টের মধ্যে আপনার হোস্ট স্ক্রিপ্ট সনাক্ত করে।
হোস্ট চালানোর সময়, এর সাথে স্ট্যাপ চালান -DRELAYGUEST[=নাম] একটি অতিথি স্ক্রিপ্ট যোগ করতে
হোস্ট মনে রাখবেন হোস্ট আনলোড করার আগে আপনাকে অবশ্যই গেস্ট আনলোড করতে হবে। যদি কিছু অতিথি থাকে
হোস্টের সাথে সংযুক্ত, হোস্ট আনলোড করা ব্যর্থ হবে।
ক্ষেত্রে কিছু ভুল হয় স্ট্যাপ or staprun একটি তদন্ত ইতিমধ্যে শুরু হয়েছে পরে
চলমান, কেউ নিরাপদে উভয় ব্যবহারকারীর প্রসেস মেরে ফেলতে পারে এবং সক্রিয় প্রোব কার্নেল সরিয়ে ফেলতে পারে
সঙ্গে মডিউল rmmod. কোনো মুলতুবি ট্রেস বার্তা হারিয়ে যেতে পারে.
সুবিধাহীন USERS জন
Systemtap কার্নেলের অভ্যন্তরীণ ডেটা স্ট্রাকচার এবং সম্ভাব্য ব্যক্তিগত ব্যবহারকারীকে প্রকাশ করে
তথ্য এই কারণে, systemtap-এর সম্পূর্ণ ক্ষমতা ব্যবহার রুট-এ সীমাবদ্ধ
এবং ব্যবহারকারীদের জন্য যারা স্ট্যাপদেভ এবং স্ট্যাপুসর গ্রুপের সদস্য।
যাইহোক, সিস্টেমট্যাপের বৈশিষ্ট্যগুলির একটি সীমাবদ্ধ সেট বিশ্বস্তদের জন্য উপলব্ধ করা যেতে পারে,
সুবিধাবঞ্চিত ব্যবহারকারী। এই ব্যবহারকারীরা শুধুমাত্র স্ট্যাপুসর গ্রুপের সদস্য, বা এর সদস্য
গ্রুপ স্ট্যাপুসর এবং স্ট্যাপসিস। এই ব্যবহারকারীরা সিস্টেমট্যাপ মডিউল লোড করতে পারে যা হয়েছে
একটি বিশ্বস্ত systemtap compile-server দ্বারা সংকলিত এবং প্রত্যয়িত। এর বর্ণনা দেখুন
অপশন -- বিশেষাধিকার এবং --ব্যবহার-সার্ভার। দেখ README.unprivileged সিস্টেমট্যাপ সোর্স কোডে
একটি বিশ্বস্ত কম্পাইল সার্ভার সেট আপ সম্পর্কে তথ্যের জন্য।
বিধিনিষেধ প্রয়োগ করা হয় যখন --privilege=stapsys নির্দিষ্ট করা হয় প্রতিরোধ করার জন্য ডিজাইন করা হয়
এর থেকে সুবিধাবঞ্চিত ব্যবহারকারী:
· দূষিতভাবে সিস্টেমের ক্ষতি করা।
বিধিনিষেধ প্রয়োগ করা হয় যখন --privilege=stapusr নির্দিষ্ট করা হয় প্রতিরোধ করার জন্য ডিজাইন করা হয়
এর থেকে সুবিধাবঞ্চিত ব্যবহারকারী:
· দূষিতভাবে সিস্টেমের ক্ষতি করা।
· তথ্যের অ্যাক্সেস লাভ করা যা সাধারণত একজনের কাছে পাওয়া যায় না
সুবিধাবিহীন ব্যবহারকারী।
· সিস্টেমের অন্যান্য ব্যবহারকারীদের মালিকানাধীন প্রক্রিয়াগুলির কার্যকারিতা ব্যাহত করা।
সাধারণভাবে সিস্টেমের কিছু ওভারহেড সুবিধাহীন থেকে অনিবার্য
ব্যবহারকারীর প্রোব উপযুক্ত সময়ে ট্রিগার করা হবে। আমরা কি চাই
এড়ানো অন্য ব্যবহারকারীর প্রক্রিয়ার লক্ষ্যবস্তু বাধা যা হবে না
সাধারণত একটি সুবিধাবিহীন ব্যবহারকারী দ্বারা সম্ভব।
প্রোবের বিধিনিষেধ
স্ট্যাপুসর এবং স্ট্যাপসি গ্রুপের একজন সদস্য সমস্ত প্রোব পয়েন্ট ব্যবহার করতে পারে।
শুধুমাত্র Stapusr গ্রুপের একজন সদস্য শুধুমাত্র নিম্নলিখিত প্রোব ব্যবহার করতে পারেন:
শুরু করুন, শুরু করুন
· শেষ, শেষ (n)
· ত্রুটি(n)
· কখনই না
· প্রক্রিয়া।*, যেখানে লক্ষ্য প্রক্রিয়া ব্যবহারকারীর মালিকানাধীন।
· টাইমার৷ jiffies,s,sec,ms,msec,us,usec,ns,nsec}(n)*
· timer.hz(n)
স্ক্রিপ্ট ভাষা বিধিনিষেধ
নিম্নোক্ত স্ক্রিপ্টিং ভাষার বৈশিষ্ট্যগুলি সমস্ত সুবিধাবঞ্চিত ব্যবহারকারীদের জন্য অনুপলব্ধ:
· গুরু মোড (-জি) বিকল্প দ্বারা সক্রিয় যে কোনো বৈশিষ্ট্য।
· এমবেডেড সি কোড।
রন্টটাইম বিধিনিষেধ
নিম্নোক্ত রানটাইম সীমাবদ্ধতা সকল সুবিধাবিহীন ব্যবহারকারীদের উপর স্থাপন করা হয়েছে:
শুধুমাত্র ডিফল্ট রানটাইম কোড (দেখুন -R) ব্যবহার করা যেতে পারে.
শুধুমাত্র গ্রুপ স্ট্যাপুসার সদস্যদের উপর অতিরিক্ত বিধিনিষেধ আরোপ করা হয়েছে:
· অন্যান্য ব্যবহারকারীদের মালিকানাধীন প্রক্রিয়াগুলির অনুসন্ধান অনুমোদিত নয়৷
কার্নেল মেমরি (পড়ুন এবং লিখুন) অ্যাক্সেস অনুমোদিত নয়।
কমান্ড লাইন অনুযায়ী OPTION বিধিনিষেধ
কিছু কমান্ড লাইন বিকল্প বৈশিষ্ট্যগুলিতে অ্যাক্সেস প্রদান করে যা সকলের জন্য উপলব্ধ হওয়া উচিত নয়
সুবিধাবঞ্চিত ব্যবহারকারী:
· -g নির্দিষ্ট করা যাবে না।
নিম্নলিখিত বিকল্পগুলি কম্পাইল-সার্ভার ক্লায়েন্ট দ্বারা ব্যবহার করা যাবে না:
-a, -B, -D, -I, -r, -R
পরিবেশ বিধিনিষেধ
নিম্নোক্ত এনভায়রনমেন্ট ভেরিয়েবলগুলি সকল সুবিধাবিহীন ব্যবহারকারীদের জন্য সেট করা উচিত নয়:
SYSTEMTAP_RUNTIME
SYSTEMTAP_TAPSET
SYSTEMTAP_DEBUGINFO_PATH
ট্যাপসেট বিধিনিষেধ
সাধারণভাবে, ট্যাপসেট ফাংশনগুলি শুধুমাত্র স্ট্যাপুসর গ্রুপের সদস্যদের জন্য উপলব্ধ থাকে যখন তারা
তথ্য সংগ্রহ করবেন না যে একটি সাধারণ প্রোগ্রাম যে ব্যবহারকারীর বিশেষাধিকার সঙ্গে চলমান
প্রবেশাধিকার অস্বীকার করা হবে.
সুবিধাবিহীন ট্যাপসেট ফাংশনের দুটি বিভাগ রয়েছে। প্রথম বিভাগ গঠিত
ইউটিলিটি ফাংশন যা সব ব্যবহারকারীর জন্য শর্তহীনভাবে উপলব্ধ; এই যেমন অন্তর্ভুক্ত
জিনিস যেমন:
cpu: দীর্ঘ ()
প্রস্থান ()
str_replace:string (prnt_str:string, srch_str:string, rplc_str:স্ট্রিং)
দ্বিতীয় বিভাগ তথাকথিত গঠিত myproc-অসুবিধাহীন ফাংশন যে শুধুমাত্র করতে পারেন
তাদের নিজস্ব প্রক্রিয়ার মধ্যে তথ্য সংগ্রহ করে। স্ক্রিপ্ট যে এই ফাংশন ব্যবহার করতে চান
ট্যাপসেট ফাংশনের ফলাফল পরীক্ষা করতে হবে is_myproc এবং শুধুমাত্র এই ফাংশন কল যদি
ফলাফল হল 1. এই ফাংশনগুলির যেকোন একটিকে কল করলে স্ক্রিপ্ট অবিলম্বে প্রস্থান করবে
একটি প্রক্রিয়ার মধ্যে একটি অনুসন্ধানের মধ্যে unprivileged ব্যবহারকারী যা সেই ব্যবহারকারীর মালিকানাধীন নয়।
উদাহরন স্বরুপ myproc-অসুবিধাহীন ফাংশন অন্তর্ভুক্ত:
print_usyms (stk:স্ট্রিং)
user_int:long (addr:long)
usymname:স্ট্রিং (addr:long)
একটি কম্পাইল ত্রুটি ট্রিগার হয় যখন কোন ফাংশন উপরের শ্রেণীগুলির মধ্যে নয়
শুধুমাত্র গ্রুপ stapusr সদস্যদের দ্বারা ব্যবহৃত.
অন্য কোন অন্তর্নির্মিত ট্যাপসেট ফাংশন শুধুমাত্র গ্রুপ stapusr সদস্যদের দ্বারা ব্যবহার করা যাবে না।
একান্তর রানটাইমস
উপরে বর্ণিত হিসাবে, systemtap-এর ডিফল্ট রানটাইম মোডে কার্নেল তৈরি ও লোড করা জড়িত
বিভিন্ন নিরাপত্তা ট্রেডঅফ উপস্থাপিত মডিউল। Systemtap এখন একটি নতুন অন্তর্ভুক্ত করেছে
প্রোটোটাইপ ব্যাকএন্ড, এর সাথে নির্বাচিত --runtime=dyninst, যা একটি যন্ত্রে Dyninst ব্যবহার করে
রানটাইমে ব্যবহারকারীর নিজস্ব প্রক্রিয়া। এই ব্যাকএন্ড কার্নেল মডিউল ব্যবহার করে না এবং করে না
রুট সুবিধা প্রয়োজন, কিন্তু প্রোব এবং অন্যান্য ধরণের ক্ষেত্রে সীমাবদ্ধ
একটি স্ক্রিপ্ট ব্যবহার করতে পারে যে নির্মাণ.
সার্জারির dyninst রানটাইম টার্গেট-অ্যাটাচ মোডে কাজ করে, তাই এটির প্রয়োজন হয় -c কমান্ড or -x
পিআইডি প্রক্রিয়া উদাহরণ স্বরূপ:
stap --runtime=dyninst -c 'stap -V' \
-e'probe process.function("প্রধান")
{ println("ডাইনিস্ট থেকে হাই!") }'
এর সাথে একটি বিরোধপূর্ণ selinux চেক নিষ্ক্রিয় করার প্রয়োজন হতে পারে
# setsebool allow_execstack 1
প্রস্থান করুন স্থিতি
অনুরোধ করা হলে সিস্টেমট্যাপ অনুবাদক সাধারণত 0-এর সাকসেস কোড দিয়ে ফিরে আসে
অনুরোধ করা পাসের মাধ্যমে স্ক্রিপ্ট প্রক্রিয়া করা হয়েছে এবং সফলভাবে কার্যকর করা হয়েছে। অন্যথায়,
ত্রুটিগুলি stderr এ মুদ্রিত হতে পারে এবং একটি ব্যর্থতা কোড ফেরত দেওয়া হয়। ব্যবহার করুন -v or -ভিপি N থেকে
সমস্যাটির উত্স সনাক্ত করতে (গ্লোবাল বা প্রতি-পাস) ভারবোসিটি বাড়ান।
তালিকা মোডে (-l এবং -L), ত্রুটি বার্তা সাধারণত দমন করা হয়. 0 এর একটি সফল কোড
অন্তত একটি মিল অনুসন্ধান পাওয়া গেলে ফেরত দেওয়া হয়।
পাস 5-এ কার্যকর করা একটি স্ক্রিপ্ট যা ^C/SIGINT-এর সাথে বাধাপ্রাপ্ত বলে মনে করা হয়
সফল।
অবচয়
সময়ের সাথে সাথে, স্ক্রিপ্ট ভাষার কিছু বৈশিষ্ট্য এবং ট্যাপসেট লাইব্রেরির মধ্য দিয়ে যেতে পারে
অসঙ্গত পরিবর্তন, যাতে systemtap-এর একটি পুরানো সংস্করণের বিপরীতে লেখা একটি স্ক্রিপ্ট না হতে পারে
আর চালানো এই ক্ষেত্রে, এটি দিয়ে systemtap চালাতে সাহায্য করতে পারে --উপযুক্ত সংস্করণ
পতাকা, সর্বশেষ পরিচিত কাজের সংস্করণ উল্লেখ করে। এর সাথে সিস্টেমট্যাপ চলছে
--চেক-সংস্করণ পতাকা একটি সতর্কতা আউটপুট হবে যদি কোনো সম্ভাব্য বেমানান উপাদান হয়েছে
পার্স করা অবচয় ঐতিহাসিক বিবরণ NEWS ফাইলে পাওয়া যেতে পারে.
onworks.net পরিষেবা ব্যবহার করে অনলাইনে স্ট্যাপ ব্যবহার করুন
