لینکس کے پروگراموں پوچھیں
دانا
ان کے لئے کچھ چیزیں کرنے کے لئے. The.
trace.
کمانڈ ان کے نظام کالیں پتہ چلتا ہے. تم کس طرح کے پروگراموں کے کام کرتے ہیں اور کیوں کو سمجھنے کے لئے ان کا استعمال کر سکتے ہیں، کبھی کبھی، وہ ایسا نہیں کرتے.
دانا اور سسٹم کالز
سمارٹ جیسا وہ ہو سکتا ہے کے طور پر، کمپیوٹر پروگرام کو اپنے لئے سب کچھ نہیں کر سکتے. وہ ان کے لئے کارکردگی کا مظاہرہ بعض افعال ہے کرنے کی درخواستوں کو بنانے کے لئے کی ضرورت ہے. ان درخواستوں لینکس دانا کے پاس جاؤ. عام طور پر، پروگرام کالز، اور لائبریری پھر مناسب درخواست پر نام نہاد ایک نظام دانا کال کرنے کے لئے بناتا ہے کہ ایک لائبریری یا دوسرے سافٹ ویئر انٹرفیس ہے.
کے نظام کالز کہ ایک پروگرام بنایا ہے اور کس کے جوابات آپ کو آپ نے لکھا ہے کہ سود کی آپ کو یا کہ پروگراموں کے اندرونی کام کاج کو سمجھنے میں مدد کر سکتے تھے دیکھنے کے قابل ہونے. یہ وہ جگہ ہے
کیا
trace.
کرتا ہے
. یہ دشواری حل مسائل اور باداوں کو نظر مدد کر سکتے ہیں.
یہ طور پر ایک ہی نہیں ہے
ایک درخواست ٹھیک کرنا
کی طرح ایک آلہ کے ساتھ
GDB
. بگ پروگرام یہ چلتا ہے کے طور پر آپ کو ایک پروگرام کے داخلی آپریشن کی تحقیقات کرنے دیتا ہے. یہ آپ کو آپ کے پروگرام کی منطق کے ذریعے قدم اور میموری اور متغیر اقدار کا معائنہ کرنے دیتا ہے. مقابلے کی طرف سے، کیا
trace.
کیا پروگرام کے طور پر نظام کی کال معلومات چل رہا ہے قبضہ ہے. جب پتہ لگایا پروگرام ختم،
trace.
ٹرمنل ونڈو پر نظام کو کال معلومات کی فہرست.
سسٹم کی کالز اس طرح تو فائلوں پر پڑھنا اور لکھنا اعمال، قتل عمل، اور کم سطح کی فعالیت کے تمام قسم کے، ہے. تاریخ کے نظام کالز کی سینکڑوں کی ایک فہرست ہے انسان صفحے syscalls .
متعلقہ: GDB کے ساتھ ٹھیک کرنا: آغاز کرنا
نصب ہو strace
اگر
trace.
پہلے سے ہی آپ کے کمپیوٹر پر نصب نہیں ہے، آپ کو بہت آسانی سے انسٹال کر سکتے ہیں.
اوبنٹو پر یہ کمانڈ استعمال کریں:
سودو مناسب انسٹال strace
Fedora کے روز، اس حکم ٹائپ کریں:
سودو DNF straceانسٹال
Manjaro کو حکم ہے:
سودو Pacman کی -Sy strace
strace ساتھ پہلا قدم
ہم کا مظاہرہ کرنے کے لئے ایک چھوٹا سا پروگرام استعمال کریں گے
trace.
. اس سے زیادہ نہیں کیا کرتا: یہ ایک فائل کو کھولتا ہے اور اس کے لئے متن کی ایک سطر لکھتے ہیں، اور یہ اس میں کسی بھی غلطی کی چیکنگ نہیں ہوئے یہ ہم کے ساتھ استعمال کرنے کے لئے کچھ ہے کہ صرف ایک فوری ہیک تا ہے
trace.
.
# شامل کریں & lt؛ stdio.h کی اور جی ٹی.
اہم (INT جہاں argc، چار ہے argv []) int کی {
// فائل ہینڈل
FILE * fileGeek؛
// "strace_demo.txt" کے نام سے ایک فائل کو کھولنے، یا اس کے پیدا
fileGeek = fopen کی ( "strace_demo.txt"، "W")؛
// فائل میں کچھ متن لکھیں
fprintf (fileGeek، "اس فائل کو لکھیں")؛
// فائل بند
fclose کے (fileGeek)؛
// پروگرام سے باہر نکلیں
واپس آ جائیں (0)؛
} // کا بنیادی
آخر
ہم "فائل io.c" نامی ایک فائل میں اس کو بچا لیا اور اس کے ساتھ مرتب
جی سی سی
نامی ایک executable میں
stex
، کے لئے نامزد کیا گیا "
سینٹ
دوڑ
سابق
کافی. "
جی سی سی -o stex فائل io.c
ہم پر کال کریں گے
trace.
اور کمانڈ لائن سے کہ ہم پتہ لگایا ہے کرنا چاہتے عمل کے طور پر اس کے لئے ہمارے نئے کارکردگی کے نام پر منتقل. ہم صرف کے طور پر آسانی لینکس حکم دیتا ہے یا کسی بھی دوسرے بائنری کارکردگی کے کسی بھی ٹریس کر سکا. ہم نے دو وجوہات کی بنا پر ہمارے چھوٹے پروگرام کا استعمال کرتے ہوئے کر رہے ہیں.
پہلی وجہ یہ ہے کہ
trace.
شبدبہل ہے. آؤٹ پٹ کی ایک بہت ہو سکتا ہے. آپ استعمال کر رہے ہیں جب یہ بہت اچھا ہے
trace.
غصے میں ہے، لیکن یہ پہلی نظر میں بھاری اکثریت سے ہو سکتا ہے. وہاں تک محدود ہے
trace.
ہمارے چھوٹے پروگرام کے لئے پیداوار. دوسری وجہ ہمارے پروگرام محدود فعالیت ہے کہ ہے، اور ماخذ کوڈ مختصر اور براہ راست ہے. یہ آسان تر پیداوار کے حصوں کے پروگرام کے اندرونی کام کاج کے مختلف حصوں کا حوالہ دیتے ہیں جس کی شناخت کے لئے ہوتا ہے.
strace ./stex
ہم واضح طور پر دیکھ سکتے ہیں
لکھیں
نظام کو کال متن بھیجنے ہماری کھولی فائل اور کے لئے "فائل کے لیے اس لکھیں"
exit_group
نظام کو کال. اس درخواست میں ارسال کردہ موضوعات میں ختم اور شیل کے لئے ایک واپسی کی قیمت واپس بھیجتا ہے.
آؤٹ پٹ فلٹرنگ
یہاں تک کہ ہمارے سادہ مظاہرے کے پروگرام کے ساتھ، بہت زیادہ پیداوار ہے. ہم استعمال کر سکتے ہیں
-
(اظہار) اختیار. ہم اس نظام کے نام سے گزریں گے جو ہم دیکھنا چاہتے ہیں.
Stace -e لکھیں ./stex367]
![]()
آپ کو ایک کوما الگ الگ فہرست کے طور پر شامل کرکے ایک سے زیادہ نظام کالوں پر رپورٹ کر سکتے ہیں. سسٹم کالز کی فہرست میں کسی بھی وائٹ اسپیس میں شامل نہ کریں.
Storace -e بند، لکھیں ./stex3067]
![]()
ایک فائل میں پیداوار بھیج رہا ہے
آؤٹ پٹ فلٹرنگ کا فائدہ پیداوار کو فلٹر کرنے کے ساتھ بھی مسئلہ ہے. آپ دیکھتے ہیں کہ آپ نے کیا دیکھا ہے، لیکن آپ کو کچھ اور نہیں مل رہا ہے. اور اس میں سے کچھ آپ کو دیکھنے کے لئے پوچھا گیا چیزوں کے مقابلے میں آپ کے لئے زیادہ مفید ہوسکتا ہے.
کبھی کبھی، سب کچھ قبضہ کرنے اور نتائج کے پورے سیٹ کے ذریعے تلاش کرنے اور سکرال کرنے کے لئے یہ زیادہ آسان ہے. اس طرح، آپ غلطی سے کچھ بھی اہم نہیں کریں گے. The.
-(آؤٹ پٹ) اختیار آپ کو ایک سے پیداوار بھیجنے کی اجازت دیتا ہےtrace.ایک ٹیکسٹ فائل میں سیشن.Stace -o ٹریس آؤٹ پٹ .txt ./stex3067]
![]()
تم پھر کر سکتے ہو کا استعمال کرتے ہیں
کمکمانڈ لسٹنگ کے ذریعے سکرال اور نظام کے کالز کے لئے تلاش کریں- یا کسی اور کے نام سے.کم ٹریس آؤٹ پٹ. txt
![]()
اب آپ سب کو استعمال کر سکتے ہیں
کمپیداوار کی تحقیقات کے لئے تلاش کی صلاحیتیں.
![]()
متعلقہ: لینکس پر کم کمانڈ کا استعمال کیسے کریں
ٹائمسٹیمپ شامل
آپ آؤٹ پٹ میں کئی مختلف ٹائمسٹیمپ شامل کرسکتے ہیں. The.
-R.(رشتہ دار ٹائمسٹیمپٹس) اختیار ٹائمسٹیمپ شامل کرتا ہے جو ہر مسلسل نظام کے کال کے آغاز کے درمیان وقت کا فرق ظاہر کرتا ہے. نوٹ کریں کہ ان ٹائم اقدار میں پچھلے نظام کال میں خرچ کردہ وقت میں شامل ہوں گے اور اگلے نظام کے کال سے پہلے پروگرام کیا گیا تھا.سٹریسر ./stex367]
![]()
ٹائمسٹیمپ آؤٹ پٹ کی ہر سطر کے آغاز میں دکھائے جاتے ہیں.
![]()
ہر نظام میں خرچ کردہ وقت کی رقم کو دیکھنے کے لئے، استعمال کریں
ٹی ٹی(SYSCALL-TIME) اختیار. اس سے پتہ چلتا ہے کہ ہر نظام کے کال کے اندر گزرا وقت کی مدت.stace -t ./stex367]
![]()
ہر نظام کال لائن کے اختتام پر وقت کی پائیداریاں دکھائی دی جاتی ہیں.
![]()
اس وقت دیکھنے کے لئے جس میں ہر نظام کو کال کیا گیا تھا، استعمال کریں
-TT.TT.(مطلق ٹائمسٹیمپ) اختیار. یہ "دیوار گھڑی" وقت سے ظاہر ہوتا ہے، ایک مائیکروسافٹ قرارداد کے ساتھ.stace -ttt./stex367]
![]()
اوقات ہر لائن کے آغاز میں ظاہر ہوتا ہے.
![]()
چل رہا ہے عمل کا سراغ لگانا
اگر آپ اس عمل کو ٹریس کرنا چاہتے ہیں تو پہلے سے ہی چل رہا ہے، آپ اب بھی منسلک کرسکتے ہیں
trace.اس کے لئے. ایسا کرنے کے لئے، آپ کو عمل کی شناخت کو جاننے کی ضرورت ہے. تم کر سکتے ہو استعمالپی ایسکے ساتھgrep.اسے تلاش کرنے کے لئے. ہمارے پاس فائر فاکس چل رہا ہے. کی شناخت کو تلاش کرنے کے لئےفائر فاکسعمل، ہم استعمال کر سکتے ہیںپی ایساور اس کے ذریعے پائپgrep..پی ایس ای | Grep فائر فاکس
![]()
ہم دیکھ سکتے ہیں کہ عمل کی شناخت 8483 ہے. ہم استعمال کریں گے
پی(عمل کی شناخت) بتانے کا اختیارtrace.کون سا عمل منسلک کرنے کے لئے. نوٹ کریں کہ آپ کو استعمال کرنے کی ضرورت ہوگیسوڈوانکارسڈو سٹریس -P 8483
![]()
آپ ایک نوٹیفکیشن دیکھیں گے
trace.خود کو عمل میں منسلک کیا ہے، اور پھر نظام ٹریس کالز ٹرمینل ونڈو میں معمول کے طور پر دکھایا جائے گا.
![]()
ایک رپورٹ بنانا
The.
سی(صرف خلاصہ) اختیار کا سبب بنتا ہےtrace.ایک رپورٹ پرنٹ کرنے کے لئے. یہ سسٹم کالز کے بارے میں معلومات کے لئے ایک میز پیدا کرتا ہے جو پتہ چلا پروگرام کی طرف سے بنایا گیا تھا.stace -c ./stex367]
![]()
کالم ہیں:
- ٪ وقت : ہر نظام کو کال میں خرچ کیا گیا تھا کہ پھانسی کے وقت کا فی صد.
- سیکنڈ : سیکنڈ اور microseconds ہر نظام کال میں گزارے میں اظہار کل وقت.
- usecs / کال : ہر نظام کو کال میں گزارے microseconds میں اوسط وقت.
- کالز : ہر نظام کو کال پھانسی دے دی گئی ہے کہ اوقات کی تعداد.
- غلطیاں : ہر نظام کو کال کے لئے ناکامیوں کی تعداد.
- syscall سسٹم کی کال کا نام.
ان اقدار کو پھانسی اور جلدی ختم کہ چھوٹی سی پروگراموں کے لئے صفر دکھائے گا. حقیقی دنیا کے اقدار کہ ہمارے مظاہرے درخواست کے مقابلے میں زیادہ بامعنی کچھ کرنے کے پروگراموں کے لئے دکھائے جاتے ہیں.
گہری بصیرت، آسانی
The.
trace.
پیداوار ہے جس کا نظام کالز بنا رہے ہیں کیا جا رہا ہے، والوں نے بار بار کئے جا رہے ہیں جس میں، اور کتنا عملدرآمد وقت دانا کی طرف کوڈ کے اندر خرچ کیا جا رہا ہے آپ کو دکھا سکتے ہیں. یہ بہت اچھا معلومات ہے. اکثر ایسا ہوتا ہے، آپ کو آپ کے کوڈ کے اندر کیا ہو رہا ہے سمجھنے کی کوشش کر رہے ہیں جب، یہ آسان ہے کہ آپ کے بائنری کے اس کے افعال میں سے بہت سے انجام دینے کے لئے دانا کے ساتھ تقریبا مسلسل بات چیت کر رہا ہے بھول جانا ہے.
کا استعمال کرتے ہوئے
trace.
، آپ کو مکمل تصویر کو دیکھیں.