انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

strace - آنلاین در ابر

اجرای strace در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS

این خط فرمانی است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


strace - ردیابی تماس ها و سیگنال های سیستم

خلاصه


تسمه [-CdffhikqrtttTvVxxy] [-In] [-bاجرا کردن] [-eصادرات]... [-aستون] [-oپرونده] [-sstrsize]
[-Pمسیر] ... -ppid... / [-D] [-EVAR[=وال]]... [-uنام کاربری] فرمان [قوس]

تسمه -c[df] [-In] [-bاجرا کردن] [-eصادرات]... [-Oدر بالای سر] [-Sمرتب سازی بر اساس] -ppid... / [-D]
[-EVAR[=وال]]... [-uنام کاربری] فرمان [قوس]

شرح


در ساده ترین حالت تسمه مشخص شده را اجرا می کند فرمان تا زمانی که خارج شود رهگیری می کند و
تماس های سیستمی که توسط یک فرآیند فراخوانی می شوند و سیگنال های دریافتی را ضبط می کند
توسط یک فرآیند نام هر فراخوانی سیستم، آرگومان ها و مقدار برگشتی آن هستند
چاپ شده بر روی خطای استاندارد یا در فایل مشخص شده با -o گزینه.

تسمه یک ابزار تشخیصی، آموزشی و اشکال زدایی مفید است. مدیران سیستم،
متخصصان تشخیص و عیب یابی آن را برای حل مشکلات بسیار ارزشمند می یابند
برنامه‌هایی که منبع آن‌ها به آسانی در دسترس نیست زیرا نیازی به آن نیست
به منظور ردیابی آنها دوباره کامپایل شده است. دانش آموزان، هکرها و افراد بیش از حد کنجکاو پیدا خواهند کرد
که با ردیابی حتی می توان چیزهای زیادی در مورد یک سیستم و سیستم آن فراخوانی کرد
برنامه های معمولی و برنامه نویسان متوجه خواهند شد که از آنجایی که تماس ها و سیگنال های سیستم هستند
رویدادهایی که در رابط کاربر/کرنل اتفاق می‌افتند، بررسی دقیق این مرز است
برای جداسازی اشکال، بررسی سلامت عقل و تلاش برای گرفتن شرایط مسابقه بسیار مفید است.

هر خط در ردیابی شامل نام فراخوانی سیستم و به دنبال آن آرگومان های آن در است
پرانتز و مقدار برگشتی آن نمونه ای از خط بندی دستور "cat /dev/null"
است:

open("/dev/null", O_RDONLY) = 3

خطاها (معمولاً مقدار بازگشتی 1-) دارای نماد errno و رشته خطا هستند.

open("/foo/bar", O_RDONLY) = -1 ENOENT (هیچ فایل یا دایرکتوری وجود ندارد)

سیگنال ها به عنوان نماد سیگنال و ساختار اطلاعات رمزگشایی شده چاپ می شوند. گزیده ای از
خط بندی و قطع کردن دستور "sleep 666" به این صورت است:

sigsuspend([]
--- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=...} ---
+++ توسط SIGINT +++ کشته شد

اگر یک فراخوانی سیستمی در حال اجرا باشد و در همین حین یک فراخوانی دیگر از a فراخوانی شود
سپس رشته/فرآیند مختلف تسمه سعی خواهد کرد نظم آن وقایع را حفظ کند و
تماس در حال انجام را به عنوان موجود علامت گذاری کنید نا تمام. هنگامی که تماس برگردد به عنوان علامت گذاری می شود
از سر گرفته شد.

[pid 28772] select(4، [3]، NULL، NULL، NULL
[pid 28779] clock_gettime (CLOCK_REALTIME، {1130322148، 939977000}) = 0
[pid 28772] <... انتخاب مجدد> ) = 1 (در [3])

وقفه یک تماس سیستم (قابل راه اندازی مجدد) توسط یک تحویل سیگنال متفاوت پردازش می شود
همانطور که کرنل فراخوانی سیستم را خاتمه می دهد و همچنین اجرای مجدد فوری آن را پس از آن ترتیب می دهد
کنترل کننده سیگنال کامل می شود.

read(0, 0x7ffff72cf5cf, 1) = ? ERESTARTSYS (برای راه اندازی مجدد)
--- SIGALRM ... ---
rt_sigreturn(0x) = 0
read(0، ""، 1) = 0

آرگومان ها به شکل نمادین با شور و اشتیاق چاپ می شوند. این مثال پوسته را نشان می دهد
انجام تغییر مسیر خروجی ">>xyzzy":

open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3

در اینجا سومین آرگومان open با تجزیه آرگومان پرچم به آن رمزگشایی می شود
سه جزء بیتی-OR و چاپ مقدار حالت به صورت اکتال بر اساس سنت. جایی که
استفاده سنتی یا بومی با ANSI یا POSIX متفاوت است، اشکال دوم ترجیح داده می شود.
در بعضی موارد، تسمه ثابت شده است که خروجی خواناتر از منبع است.

نشانگرهای ساختار از ارجاع خارج شده و اعضا به صورت مناسب نمایش داده می شوند. در همه
آرگومان های case به بهترین شکل ممکن C شکل بندی می شوند. به عنوان مثال
ماهیت دستور "ls -l /dev/null" به صورت زیر گرفته می شود:

lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0

توجه کنید که چگونه آرگومان 'struct stat' ارجاع داده نمی شود و هر عضو چگونه نمایش داده می شود
به صورت نمادین به طور خاص، مشاهده کنید که چگونه عضو st_mode به دقت به a رمزگشایی می شود
بیتی-OR مقادیر نمادین و عددی. همچنین در این مثال توجه کنید که اولین
آرگومان lstat یک ورودی برای فراخوانی سیستم و آرگومان دوم یک خروجی است.
از آنجایی که در صورت شکست فراخوانی سیستم، آرگومان های خروجی اصلاح نمی شوند، ممکن است آرگومان ها همیشه نباشند
ارجاع داده نشود. به عنوان مثال، امتحان مجدد مثال "ls -l" با فایلی که وجود ندارد
خط زیر را تولید می کند:

lstat("/foo/bar", 0xb004) = -1 ENOENT (هیچ فایل یا دایرکتوری وجود ندارد)

در این حالت چراغ ایوان روشن است اما کسی خانه نیست.

نشانگرهای کاراکتر ارجاع داده نمی شوند و به صورت رشته های C چاپ می شوند. کاراکترهای غیرچاپ در
رشته ها معمولاً با کدهای فرار C معمولی نشان داده می شوند. فقط اولی strsize (32
به طور پیش فرض) بایت های رشته ها چاپ می شوند. رشته های بلندتر دارای یک بیضی اضافه شده است
به دنبال نقل قول پایانی در اینجا خطی از "ls -l" وجود دارد که در آن عبارت است getpwuid کتابخانه
روال خواندن فایل رمز عبور است:

read(3، "root::0:0:System Administrator:/"...، 1024) = 422

در حالی که ساختارها با استفاده از مهاربندهای فرفری حاشیه نویسی می شوند، اشاره گرها و آرایه های ساده چاپ می شوند
با استفاده از براکت های مربع با کاما جدا کننده عناصر. در اینجا یک مثال از
دستور "id" در سیستمی با شناسه گروه مکمل:

getgroups (32، [100، 0]) = 2

از سوی دیگر، مجموعه‌های بیت نیز با استفاده از براکت‌های مربع نشان داده می‌شوند، اما عناصر مجموعه نشان داده می‌شوند
تنها با یک فاصله از هم جدا شده است. در اینجا پوسته ای است که برای اجرای یک دستور خارجی آماده می شود:

sigprocmask(SIG_BLOCK، [CHLD TTOU]، []) = 0

در اینجا آرگومان دوم مجموعه بیتی از دو سیگنال SIGCHLD و SIGTTOU است. در بعضی موارد
مجموعه بیت آنقدر پر است که چاپ کردن عناصر تنظیم نشده ارزشمندتر است. در آن
در حالت، مجموعه بیت با یک tilde مانند زیر پیشوند می شود:

sigprocmask(SIG_UNBLOCK، ~[]، NULL) = 0

در اینجا آرگومان دوم مجموعه کامل همه سیگنال ها را نشان می دهد.

OPTIONS


-c برای هر تماس سیستمی زمان، تماس ها و خطاها را بشمارید و خلاصه ای از آن را گزارش دهید
خروج از برنامه در لینوکس، این تلاش می کند زمان سیستم (زمان صرف شده CPU را نشان دهد
در حال اجرا در هسته) مستقل از زمان ساعت دیواری. اگر -c با استفاده می شود -f
or -F (در زیر)، فقط مجموع کل برای همه فرآیندهای ردیابی شده نگهداری می شود.

-C پسندیدن -c بلکه خروجی منظم را در حین اجرای فرآیندها چاپ کنید.

-D فرآیند ردیاب را به عنوان یک نوه جدا شده اجرا کنید، نه به عنوان والد ردیابی.
این اثر قابل مشاهده را کاهش می دهد تسمه با نگه داشتن اثر مستقیم به عنوان فرزند
از فرآیند فراخوانی

-d نمایش برخی از خروجی های اشکال زدایی از تسمه خود را بر روی خطای استاندارد.

-f ردیابی فرآیندهای فرزند همانطور که توسط فرآیندهای ردیابی فعلی ایجاد می شوند
نتیجه از چنگال(2) vfork(2) و کلون کردن(2) تماس های سیستمی. توجه داشته باشید که -p PID
-f اگر چند رشته ای باشد، نه تنها، همه رشته های PID فرآیند را به هم متصل می کند
رشته با thread_id = PID.

-ff اگر -o نام فایل گزینه در حال اجرا است، ردیابی هر فرآیند در آن نوشته می شود
filename.pid که در آن pid شناسه فرآیند عددی هر فرآیند است. این هست
ناسازگار با -c، از آنجایی که هیچ شمارش در هر فرآیند نگهداری نمی شود.

-F این گزینه اکنون منسوخ شده است و عملکردی مشابه دارد -f.

-h خلاصه راهنما را چاپ کنید.

-i نشانگر دستورالعمل را در زمان تماس سیستمی چاپ کنید.

-k پس از هر فراخوانی سیستم، ردپای پشته اجرایی فرآیندهای ردیابی شده را چاپ کنید
(تجربی). این گزینه فقط در صورتی موجود است که تسمه ساخته شده است با
libunwind

-q پیام‌های مربوط به پیوست کردن، جدا کردن و غیره را سرکوب کنید. این به طور خودکار اتفاق می‌افتد
هنگامی که خروجی به یک فایل هدایت می شود و دستور به جای آن مستقیماً اجرا می شود
پیوستن

-qq اگر دو بار داده شد، پیام‌های مربوط به وضعیت خروج از فرآیند را سرکوب کنید.

-r هنگام ورود به هر تماس سیستمی، یک مهر زمانی نسبی چاپ کنید. این ثبت می کند
تفاوت زمانی بین شروع تماس های متوالی سیستم

-t پیشوند هر خط از ردیابی با زمان روز.

-بله اگر دو بار داده شود، زمان چاپ شده شامل میکروثانیه خواهد بود.

-تت اگر سه بار داده شود، زمان چاپ شده شامل میکروثانیه و مقدار خواهد بود
بخش اصلی به عنوان تعداد ثانیه از زمان چاپ خواهد شد.

-T زمان صرف شده در تماس های سیستمی را نشان دهید. این تفاوت زمانی بین را ثبت می کند
ابتدا و انتهای هر تماس سیستمی

-w تفاوت زمان شروع و پایان هر سیستم را خلاصه کنید
صدا زدن. پیش فرض این است که زمان سیستم را خلاصه کنید.

-v نسخه های نامشخص تماس های محیطی، آمار، ترمیوس و غیره را چاپ کنید.
این ساختارها در تماس ها بسیار رایج هستند و بنابراین رفتار پیش فرض نمایش داده می شود
زیر مجموعه معقولی از اعضای ساختار از این گزینه برای دریافت همه موارد استفاده کنید
جزئیات تلخ

-V چاپ شماره نسخه از تسمه.

-x تمام رشته های غیر ASCII را در قالب رشته هگزادسیمال چاپ کنید.

-xx تمام رشته ها را در قالب رشته هگزادسیمال چاپ کنید.

-y چاپ مسیرهای مرتبط با آرگومان های توصیفگر فایل.

-yy جفت‌های ip:port مرتبط با توصیفگرهای فایل سوکت را چاپ کنید.

-a ستون مقادیر بازگشتی را در یک ستون خاص تراز کنید (ستون پیش فرض 40).

-b سیکل اگر به syscall مشخص رسیده است، از فرآیند ردیابی جدا شوید. در حال حاضر، فقط
اجرا کردن syscall پشتیبانی می شود. اگر می خواهید ردیابی کنید، این گزینه مفید است
فرآیند چند رشته ای و بنابراین نیاز به -f دارد، اما نمی خواهید آن را ردیابی کنید
کودکان (بالقوه بسیار پیچیده).

-e صادرات یک عبارت واجد شرایط که رویدادهایی را برای ردیابی یا نحوه ردیابی تغییر می دهد
آنها قالب عبارت این است:

[مقدماتی=][!]value1[,value2] ...

جایی که مقدماتی یکی از رد, مخفف, واژگان, خام, سیگنال, خواندن، یا نوشتن
و ارزش یک نماد یا عدد وابسته به واجد شرایط است. واجد شرایط پیش فرض است
رد. استفاده از علامت تعجب مجموعه مقادیر را نفی می کند. مثلا،
-e باز کن به معنای واقعی کلمه -e رد=باز کن که به نوبه خود به معنای ردیابی فقط است باز کن
تماس سیستمی در مقابل، -e رد=!باز کن به معنای ردیابی هر تماس سیستمی است
جز باز کن. علاوه بر این، ارزش های ویژه تمام و هیچ بدیهی است
معانی

توجه داشته باشید که برخی از پوسته ها از علامت تعجب حتی برای بسط تاریخ استفاده می کنند
داخل آرگومان های نقل شده اگر چنین است، باید از علامت تعجب با a فرار کنید
بک اسلش

-e رد=تنظیم
فقط مجموعه مشخص شده از تماس های سیستمی را ردیابی کنید. در -c گزینه مفید است برای
تعیین اینکه کدام فراخوانی سیستم ممکن است برای ردیابی مفید باشد. مثلا،
رد=باز کردن، بستن، خواندن، نوشتن به این معنی است که فقط آن چهار تماس سیستمی را ردیابی کنید. بودن
هنگام استنتاج در مورد مرز کاربر/هسته اگر فقط یک زیر مجموعه باشد، مراقب باشید
تماس های سیستمی در حال نظارت است. پیش فرض است رد=تمام.

-e رد=پرونده
ردیابی همه فراخوانی های سیستمی که نام فایل را به عنوان آرگومان می گیرند. شما می توانید فکر کنید
از این به عنوان مخفف برای -e رد=باز کن,آمار,chmod,لغو ارتباط،... که هست
برای دیدن اینکه فرآیند به چه فایل هایی ارجاع می دهد مفید است. علاوه بر این، با استفاده از
مخفف تضمین می کند که به طور تصادفی فراموش نکنید که a را اضافه کنید
تماس بگیرید مانند lstat در لیست بچیا آن یکی را فراموش می کرد.

-e رد=روند
ردیابی تمام تماس های سیستمی که شامل مدیریت فرآیند می شوند. این مفید است برای
مشاهده مراحل فوک، صبر و اجرای یک فرآیند.

-e رد=شبکه
همه تماس های سیستمی مرتبط با شبکه را ردیابی کنید.

-e رد=سیگنال
همه تماس‌های سیستمی مرتبط با سیگنال را ردیابی کنید.

-e رد=آی پی سی
تمام تماس های سیستمی مرتبط با IPC را ردیابی کنید.

-e رد=نزولی
ردیابی تمام تماس های سیستمی مربوط به توصیفگر فایل.

-e رد=حافظه
همه تماس‌های سیستم مربوط به نقشه‌برداری حافظه را ردیابی کنید.

-e مخفف=تنظیم
خروجی چاپ هر یک از اعضای سازه های بزرگ را به اختصار بنویسید. را
پیش فرض است مخفف=تمام. -v گزینه اثر دارد مخفف=هیچ.

-e واژگان=تنظیم
ساختارهای ارجاع برای مجموعه مشخصی از فراخوانی های سیستم. پیش فرض است
واژگان=تمام.

-e خام=تنظیم آرگومان های خام و رمزگشایی نشده را برای مجموعه مشخصی از فراخوانی های سیستم چاپ کنید. این
این گزینه باعث می شود که همه آرگومان ها به صورت هگزادسیمال چاپ شوند.
اگر به رمزگشایی اعتماد ندارید یا نیاز به دانستن آن دارید، بیشتر مفید است
مقدار عددی واقعی یک آرگومان

-e سیگنال=تنظیم
فقط زیر مجموعه مشخص شده سیگنال ها را ردیابی کنید. پیش فرض است سیگنال=تمام. برای
مثال، سیگنال =! SIGIO (و یا سیگنال=!io) باعث می شود سیگنال های SIGIO نباشند
ردیابی شده است.

-e خواندن=تنظیم یک هگزادسیمال و اسکی کامل از تمام داده های خوانده شده از فایل انجام دهید
توصیفگرهای فهرست شده در مجموعه مشخص شده به عنوان مثال، برای دیدن همه ورودی ها
فعالیت بر روی توصیفگرهای فایل 3 و 5 استفاده کنید -e خواندن=3,5. توجه داشته باشید که این است
مستقل از ردیابی عادی خواندن(2) فراخوانی سیستم که است
توسط گزینه کنترل می شود -e رد=خواندن.

-e نوشتن=تنظیم
یک هگزادسیمال و اسکی کامل از تمام داده های نوشته شده در فایل انجام دهید
توصیفگرهای فهرست شده در مجموعه مشخص شده به عنوان مثال، برای دیدن همه خروجی ها
فعالیت بر روی توصیفگرهای فایل 3 و 5 استفاده کنید -e نوشتن=3,5. توجه داشته باشید که این است
مستقل از ردیابی عادی نوشتن(2) فراخوانی سیستم که است
توسط گزینه کنترل می شود -e رد=نوشتن.

-I قابل وقفه
هنگامی که strace می تواند توسط سیگنال ها قطع شود (مانند فشار دادن ^C). 1: نه
سیگنال ها مسدود شده اند. 2: سیگنال های مرگبار هنگام رمزگشایی syscall مسدود می شوند
(پیش فرض)؛ 3: سیگنال های مرگبار همیشه مسدود هستند (اگر '-o FILE PROG' پیش فرض باشد). 4:
سیگنال های مرگبار و SIGTSTP (^Z) همیشه مسدود هستند (برای ایجاد خط -o مفید است
FILE PROG روی ^Z متوقف نمی شود.

-o نام فایل خروجی ردیابی را در فایل بنویسید نام فایل به جای stderr. استفاده کنید
filename.pid if -ff استفاده می شود. اگر آرگومان با '|' شروع شود یا با '!' سپس
بقیه آرگومان به عنوان یک فرمان در نظر گرفته می شود و تمام خروجی ها به آن لوله می شوند
آی تی. این برای لوله‌کشی خروجی اشکال زدایی به برنامه‌ای بدون آن راحت است
بر تغییر مسیرهای برنامه های اجرا شده تأثیر می گذارد.

-O در بالای سر سربار را برای ردیابی تماس های سیستم تنظیم کنید در بالای سر میکروثانیه این هست
برای نادیده گرفتن اکتشافی پیش فرض برای حدس زدن زمان مفید است
صرف اندازه گیری در هنگام تماس سیستم زمان بندی با استفاده از -c گزینه.
دقت اکتشافی را می توان با زمان بندی یک برنامه مشخص که بدون اجرای آن اندازه گیری کرد
ردیابی (با استفاده از زمان(1)) و مقایسه زمان تماس انباشته سیستم با
کل تولید شده با استفاده از -c.

-p pid با شناسه فرآیند به فرآیند پیوست کنید pid و ردیابی را آغاز کنید. ردیابی
ممکن است در هر زمان توسط یک سیگنال وقفه صفحه کلید (CTRL-C) خاتمه یابد. تسمه
با جدا شدن از فرآیند(های) ردیابی شده و ترک آن (آنها) پاسخ خواهد داد.
برای ادامه دویدن چندگانه -p گزینه ها را می توان برای اتصال به بسیاری استفاده کرد
فرآیندها -p "pidof PROG" نحو پشتیبانی می شود.

-P مسیر ردیابی فقط تماس های سیستمی در حال دسترسی مسیر. چندین -P می توان از گزینه ها استفاده کرد
چندین مسیر را مشخص کنید

-s strsize حداکثر اندازه رشته را برای چاپ مشخص کنید (پیش فرض 32 است). توجه داشته باشید که
نام فایل ها رشته ای در نظر گرفته نمی شوند و همیشه به طور کامل چاپ می شوند.

-S مرتب سازی بر اساس مرتب سازی خروجی هیستوگرام چاپ شده توسط -c گزینه توسط مشخص شده
معیار ارزش های قانونی هستند زمان, تماس, نامو هیچ چی (به طور پیش فرض است زمان).

-u نام کاربری دستور را با شناسه کاربر، شناسه گروه و گروه های تکمیلی اجرا کنید نام کاربری.
این گزینه فقط زمانی مفید است که به صورت روت اجرا می شود و صحیح را فعال می کند
اجرای باینری های setuid و/یا setgid. مگر اینکه از این گزینه setuid استفاده شود
و برنامه های setgid بدون امتیازات موثر اجرا می شوند.

-E VAR=وال اجرای دستور با VAR=وال در لیست متغیرهای محیطی آن

-E VAR برداشتن VAR از لیست ارثی متغیرهای محیطی قبل از ارسال آن
به فرمان

عیب یابی


چه زمانی فرمان خروجی ها، تسمه با همان وضعیت خروج خارج می شود. اگر فرمان توسط a خاتمه می یابد
علامت، تسمه خود را با همان سیگنال خاتمه می دهد، به طوری که تسمه می تواند به عنوان یک استفاده شود
فرآیند wrapper برای فرآیند والد فراخوان شفاف است. توجه داشته باشید که والد-فرزند
رابطه (اعلان‌های توقف سیگنال، مقدار getppid() و غیره) بین فرآیند ردیابی و
والد آن حفظ نمی شود مگر اینکه -D استفاده می شود.

هنگام استفاده از -p، وضعیت خروج از تسمه صفر است مگر اینکه یک خطای غیر منتظره در آن وجود داشته باشد
انجام ردیابی

SETUID نصب و راه اندازی


If تسمه setuid به روت نصب می شود سپس کاربر فراخوانی می تواند به و وصل شود
ردیابی فرآیندهای متعلق به هر کاربری. علاوه بر این برنامه setuid و setgid خواهد بود
با امتیازات مؤثر صحیح اجرا و ردیابی شد. از آنجایی که فقط کاربران قابل اعتماد هستند
برای انجام این کارها باید به مجوزهای روت کامل اجازه داده شود، فقط نصب منطقی است
تسمه هنگامی که کاربرانی که می توانند آن را اجرا کنند به آن کاربران محدود می شوند، به عنوان setuid برای روت کردن
که این اعتماد را دارند به عنوان مثال، نصب یک نسخه خاص از آن منطقی است تسمه
با حالت 'rwsr-xr--'، کاربر ریشه و گروه رد، جایی که اعضای رد گروه هستند
کاربران قابل اعتماد اگر از این ویژگی استفاده می‌کنید، لطفاً به یاد داشته باشید که یک non-setuid نصب کنید
نسخه تسمه برای استفاده از لوزرهای معمولی

از strace آنلاین با استفاده از خدمات onworks.net استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad