এই কমান্ড sprof যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
sprof - শেয়ার করা অবজেক্ট প্রোফাইলিং ডেটা পড়ুন এবং প্রদর্শন করুন
সাইনোপিসিস
sprof [পছন্দ] ... ভাগ করা বস্তু-পথ [প্রোফাইল-ডেটা-পথ]
বর্ণনাঃ
সার্জারির sprof কমান্ড শেয়ার করা বস্তুর জন্য একটি প্রোফাইলিং সারাংশ প্রদর্শন করে (ভাগ করা লাইব্রেরি)
এর প্রথম কমান্ড-লাইন আর্গুমেন্ট হিসাবে নির্দিষ্ট করা হয়েছে। প্রোফাইলিং সারাংশ ব্যবহার করে তৈরি করা হয়
পূর্বে (ঐচ্ছিক) দ্বিতীয় কমান্ড-লাইন আর্গুমেন্টে প্রোফাইলিং ডেটা তৈরি করা হয়েছে। যদি
প্রোফাইলিং ডেটা পথের নাম বাদ দেওয়া হয়, তারপর sprof ব্যবহার করে এটি অনুমান করার চেষ্টা করবে
শেয়ার করা বস্তুর soname, নামের সাথে একটি ফাইল খুঁজছেন প্রোফাইল মধ্যে
বর্তমান ডিরেক্টরি।
বিকল্প
নিম্নলিখিত কমান্ড-লাইন বিকল্পগুলি উত্পাদিত প্রোফাইল আউটপুট নির্দিষ্ট করে:
-c, --কল-জোড়া
শেয়ার্ড দ্বারা এক্সপোর্ট করা ইন্টারফেসের জন্য কল পাথের জোড়ার একটি তালিকা প্রিন্ট করুন
অবজেক্ট, প্রতিটি পথ কতবার ব্যবহার করা হয়েছে তার সাথে।
-p, --ফ্ল্যাট-প্রোফাইল
নিরীক্ষণ করা বস্তুর সমস্ত ফাংশনের একটি সমতল প্রোফাইল তৈরি করুন, এর সাথে
গণনা এবং ticks.
-q, --চিত্রলেখ
একটি কল গ্রাফ তৈরি করুন।
যদি উপরের বিকল্পগুলির কোনটি নির্দিষ্ট করা না থাকে, তাহলে ডিফল্ট আচরণ হল একটি ফ্ল্যাট প্রদর্শন করা
প্রোফাইল এবং একটি কল গ্রাফ।
নিম্নলিখিত অতিরিক্ত কমান্ড লাইন বিকল্প উপলব্ধ:
-?, --help
কমান্ড-লাইন বিকল্প এবং আর্গুমেন্টের একটি সারাংশ প্রদর্শন করুন এবং প্রস্থান করুন।
-- ব্যবহার
একটি সংক্ষিপ্ত ব্যবহারের বার্তা প্রদর্শন করুন এবং প্রস্থান করুন।
-V, --সংস্করণ
প্রোগ্রাম সংস্করণ প্রদর্শন এবং প্রস্থান করুন.
কনফর্মিং প্রতি
সার্জারির sprof কমান্ড হল একটি GNU এক্সটেনশন, POSIX.1-এ উপস্থিত নয়।
EXAMPLE টি
নিম্নলিখিত উদাহরণ ব্যবহার প্রদর্শন করে sprof. উদাহরণ একটি প্রধান গঠিত
প্রোগ্রাম যা একটি ভাগ করা বস্তুতে দুটি ফাংশন কল করে। প্রথমত, প্রধান প্রোগ্রামের কোড:
$ বিড়াল prog.c
# অন্তর্ভুক্ত
void x1(void);
void x2(void);
কোন int
প্রধান (int argc, char *argv[])
{
x1();
x2();
প্রস্থান (EXIT_SUCCESS);
}
ফাংশন x1() এবং x2() নিম্নলিখিত উৎস ফাইলে সংজ্ঞায়িত করা হয় যা ব্যবহার করা হয়
ভাগ করা বস্তু তৈরি করুন:
$ বিড়াল libdemo.c
#অন্তর্ভুক্ত
অকার্যকর
consumeCpu1(int lim)
{
int j;
জন্য (j = 0; j < lim; j++)
getppid();
}
অকার্যকর
x1(অকার্যকর) {
int j;
জন্য (j = 0; j < 100; j++)
consumeCpu1(২০১১);
}
অকার্যকর
consumeCpu2(int lim)
{
int j;
জন্য (j = 0; j < lim; j++)
getppid();
}
অকার্যকর
x2(অকার্যকর)
{
int j;
জন্য (j = 0; j < 1000; j++)
consumeCpu2(২০১১);
}
এখন আমরা আসল নাম দিয়ে শেয়ার করা অবজেক্ট তৈরি করি libdemo.so.1.0.1, এবং সোনাম
libdemo.so.1:
$ cc -g -fpic - শেয়ার করা হয়েছে -Wl,-soname,libdemo.so.1 \
-o libdemo.so.1.0.1 libdemo.c
তারপরে আমরা লাইব্রেরি সোনেম এবং লাইব্রেরি লিঙ্কার নামের জন্য প্রতীকী লিঙ্কগুলি তৈরি করি:
$ ln -sf libdemo.so.1.0.1 libdemo.so.1
$ ln -sf libdemo.so.1 libdemo.so
এর পরে, আমরা মূল প্রোগ্রামটি কম্পাইল করি, এটিকে ভাগ করা বস্তুর সাথে লিঙ্ক করে, এবং তারপর তালিকাভুক্ত করি
প্রোগ্রামের গতিশীল নির্ভরতা:
$ cc -g -o খাবার prog.c -ল। -এলডিমো
$ এলডিডি খাবার
linux-vdso.so.1 => (0x00007fff86d66000)
libdemo.so.1 => পাওয়া যায়নি
libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd4dc51f000)
শেয়ার্ড অবজেক্টের প্রোফাইলিং তথ্য পেতে, আমরা পরিবেশকে সংজ্ঞায়িত করি
পরিবর্তনশীল LD_PROFILE গ্রন্থাগারের সোনাম সহ:
$ রপ্তানি LD_PROFILE=libdemo.so.1
আমরা তারপর পরিবেশ পরিবর্তনশীল সংজ্ঞায়িত LD_PROFILE_OUTPUT এর পথনাম সহ
ডিরেক্টরি যেখানে প্রোফাইল আউটপুট লেখা উচিত, এবং যদি না হয় সেই ডিরেক্টরিটি তৈরি করুন
ইতিমধ্যে বিদ্যমান:
$ রপ্তানি LD_PROFILE_OUTPUT=$(pwd)/prof_data
$ mkdir, -p $LD_PROFILE_OUTPUT
LD_PROFILE প্রোফাইলিং আউটপুট হতে কারণ সংযোজিত আউটপুট ফাইলে যদি এটি ইতিমধ্যে বিদ্যমান থাকে,
তাই আমরা নিশ্চিত করি যে কোনও পূর্বে বিদ্যমান প্রোফাইলিং ডেটা নেই:
$ rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile
তারপরে আমরা প্রোফাইলিং আউটপুট তৈরি করতে প্রোগ্রাম চালাই, যা একটি ফাইলে লেখা হয়
ডিরেক্টরিতে উল্লেখ করা হয়েছে LD_PROFILE_OUTPUT:
$ LD_LIBRARY_PATH=. ./prog
$ ls prof_data
libdemo.so.1.profile
আমরা তারপর ব্যবহার sprof -p গণনা এবং টিক সহ একটি ফ্ল্যাট প্রোফাইল তৈরি করার বিকল্প:
$ sprof -p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
ফ্ল্যাট প্রোফাইল:
প্রতিটি নমুনা 0.01 সেকেন্ড হিসাবে গণনা করে।
% ক্রমবর্ধমান স্ব স্ব মোট
সময় সেকেন্ড সেকেন্ড আমাদের ডাকে/আমাদেরকে কল করে/নামে কল করে
60.00 0.06 0.06 100 600.00 consumeCpu1
40.00 0.10 0.04 1000 40.00 consumeCpu2
0.00 0.10 0.00 1 0.00 x1
0.00 0.10 0.00 1 0.00 x2
সার্জারির sprof -q বিকল্পটি একটি কল গ্রাফ তৈরি করে:
$ sprof -q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
সূচক % সময় স্ব শিশুদের নাম বলা হয়
0.00 0.00 100/100 x1 [1]
[০] 0 100.0 0.00 0.00 consumeCpu100 [1]
-----------------------------------------------
0.00 0.00 1/1
[১] 1 0.0 0.00 0.00 x1 [1]
0.00 0.00 100/100 consumeCpu1 [0]
-----------------------------------------------
0.00 0.00 1000/1000 x2 [3]
[০] 2 0.0 0.00 0.00 consumeCpu1000 [2]
-----------------------------------------------
0.00 0.00 1/1
[১] 3 0.0 0.00 0.00 x1 [2]
0.00 0.00 1000/1000 consumeCpu2 [2]
-----------------------------------------------
উপরে এবং নীচে, " " স্ট্রিংগুলি চিহ্নিতকারীর প্রতিনিধিত্ব করে যা
প্রফাইল অবজেক্ট (এই উদাহরণে, এইগুলি এর উদাহরণ প্রধান ()).
সার্জারির sprof -c বিকল্পটি কল জোড়ার একটি তালিকা এবং তাদের সংঘটনের সংখ্যা তৈরি করে:
$ sprof -c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
x1 1
x1 consumeCpu1 100
x2 1
x2 consumeCpu2 1000
onworks.net পরিষেবা ব্যবহার করে অনলাইনে sprof ব্যবহার করুন