| CRASH(8) | System Manager's Manual | CRASH(8) |
نام (NAME)
crash - تحلیل دادههای خرابی (crash dump) یا یک سیستم زنده در لینوکس
خلاصه دستور (SYNOPSIS)
crash [گزینه]...
NAMELIST MEMORY-IMAGE[@ADDRESS] (حالت
فایل دامپ)
crash [گزینه]...
[NAMELIST] (حالت
سیستم
زنده)
توضیحات (DESCRIPTION)
ابزار Crash یک ابزار برای تحلیل تعاملی وضعیت سیستم لینوکس در حین اجرا، یا پس از رخ دادن خرابی هسته (kernel crash) و ایجاد دامپ هسته (core dump) توسط امکانات netdump، diskdump، LKCD، kdump، xendump، kvmdump یا VMware است. این ابزار بر اساس دستور crash در SVR4 UNIX توسعه یافته است، اما با ادغام کامل آن با دیباگر gdb(1) بهطور قابل توجهی بهبود یافته است. ترکیب این دو، ماهیت اختصاصی هسته در ابزار سنتی crash یونیکس را با قابلیتهای دیباگ در سطح کد منبع gdb(1) بهطور مؤثری پیوند داده است.
در حالت فایل دامپ، هر دو آرگومان NAMELIST و MEMORY-IMAGE باید وارد شوند. در حالت سیستم زنده، اگر فایل vmlinux هسته در مکانی شناختهشده مانند شاخه /usr/lib/debug/lib/modules/<kernel-version> قرار نداشته باشد، آرگومان NAMELIST باید وارد شود.
ابزار crash همچنین برای پشتیبانی از تحلیل فایلهای دامپ ایجادشده ناشی از خرابی هایپروایزر Xen توسعه یافته است. در این حالت، آرگومان NAMELIST باید باینری xen-syms باشد. تحلیل سیستم زنده برای هایپروایزر Xen پشتیبانی نمیشود.
مجموعه دستورات ابزار crash شامل ابزارهای رایج تحلیل حافظه هسته مانند ردگیری پشته هسته (backtrace) برای تمام فرآیندها، دیزاسمبل کد منبع، نمایش ساختارها و متغیرهای هسته با فرمت مناسب، دادههای حافظه مجازی، دامپ لیستهای پیوندی و غیره به همراه چندین دستور برای بررسی عمیقتر زیرسیستمهای خاص هسته است. دستورات مناسب gdb را نیز میتوان وارد کرد که برای اجرا به ماژول gdb ارسال میشوند. در صورت تمایل، دستورات را میتوان در فایل $HOME/.crashrc و/یا در یک فایل .crashrc در شاخه جاری قرار داد. هنگام راهاندازی، دستورات موجود در $HOME/.crashrc ابتدا اجرا میشوند و سپس دستورات فایل ./.crashrc اجرا میگردند.
ابزار crash به گونهای طراحی شده است که مستقل از وابستگیهای نسخه لینوکس باشد. هنگامی که تغییرات کد منبع جدید هسته بر عملکرد صحیح crash و مجموعه دستورات آن تأثیر بگذارد، این ابزار بهروزرسانی میشود تا تغییرات جدید کد هسته را شناسایی کند و در عین حال سازگاری با نسخههای قبلی را حفظ نماید.
گزینهها (OPTIONS)
- NAMELIST
- مسیر یک ایمیج فشردهنشده هسته (یک فایل vmlinux) یا یک ایمیج هایپروایزر Xen (یک فایل xen-syms) است که با گزینه «-g» کامپایل شده باشد. در صورت استفاده از حالت فایل دامپ، یک فایل vmlinux میتواند در قالبهای gzip یا bzip2 فشرده شده باشد.
- MEMORY-IMAGE[@ADDRESS]
- یک فایل core dump
هسته که
توسط
امکانات
netdump، diskdump، LKCD،
kdump، xendump، kvmdump
یا VMware ایجاد
شده است.
اگر آرگومان MEMORY-IMAGE وارد نشود، نشست روی سیستم زنده اجرا خواهد شد که معمولاً به دلیل فایل دستگاه مورد استفاده برای دسترسی به RAM سیستم، به دسترسی ریشه (root) نیاز دارد. بهطور پیشفرض، در صورت وجود /dev/crash از آن استفاده خواهد شد. اگر وجود نداشته باشد، /dev/mem استفاده میشود؛ اما اگر هسته با CONFIG_STRICT_DEVMEM پیکربندی شده باشد، /proc/kcore به کار خواهد رفت. وارد کردن صریح /dev/crash، /dev/mem یا /proc/kcore مجاز است.
اگر فایل دامپ یک فایل دامپ خام RAM باشد که اطلاعات هدر برای توصیف محتویات فایل را ندارد، باید مقدار @ADDRESS به انتهای MEMORY-IMAGE پیوست شود. میتوان چندین جفت مرتب MEMORY-IMAGE@ADDRESS وارد کرد که در آن هر فایل دامپ شامل یک بلوک پیوسته از RAM است و مقدار ADDRESS آدرس فیزیکی شروع بلوک در مبنای شانزدهشانزدهی (هگزادسیمال) است. مقدار(های) آدرس فیزیکی برای ایجاد یک هدر ELF موقت در /var/tmp استفاده خواهد شد که فقط در طول نشست crash وجود خواهد داشت. اگر یک فایل دامپ خام RAM نشاندهنده یک منبع حافظه زنده باشد (مانند آنچه توسط آرگومان mem-path شیء memory-backend-file در QEMU مشخص میشود)، باید «:live» به ابتدای نام MEMORY-IMAGE اضافه شود.
به عنوان امکان VMware، ابزار crash قادر است دامپ حافظه ماشین مجازی VMware ناشی از تعلیق (suspend) ماشین مجازی یا core dump مهمان را پردازش کند. در این حالت، فایل .vmss یا .guest باید به عنوان MEMORY-IMAGE استفاده شود و فایل .vmem نیز باید در همان پوشه قرار داشته باشد.
- mapfile
- اگر فایل NAMELIST مربوط به همان هستهای نباشد که در حال اجرا است (حالت سیستم زنده)، یا هستهای که هنگام خرابی سیستم در حال اجرا بوده است (حالت فایل دامپ)، باید فایل System.map هسته اصلی در خط فرمان وارد شود.
-h [گزینه]
--help [گزینه]
- -s
- بدون نمایش هیچگونه اطلاعات نسخه، GPL یا دادههای مقداردهی اولیه crash در زمان شروع، مستقیماً و در سکوت به خط اعلان «<crash» میرود و بهطور پیشفرض، خروجی دستورات زمان اجرا به هیچ دستور پیمایشی (scroller) ارسال نمیشود.
- -i file
- دستور(ات) موجود در file را قبل از نمایش خط اعلان «<crash» برای دریافت ورودی تعاملی کاربر اجرا میکند.
- -d num
- سطح دیباگ داخلی را تنظیم میکند. هرچه عدد بزرگتر باشد، دادههای دیباگ بیشتری هنگام راهاندازی و اجرای crash چاپ خواهد شد.
- -S
- استفاده از /boot/System.map به عنوان mapfile.
- -e vi | emacs
- حالت ویرایش خط فرمان readline(3) را روی "vi" یا "emacs" تنظیم میکند. حالت ویرایش پیشفرض "vi" است.
- -f
- اجبار به استفاده از فایل فشرده vmlinux در صورتی که نام اصلی آن با "vmlinux" شروع نشود.
- -k
- مشخص میکند که فایل NAMELIST یک فایل اطلاعات دیباگ LKCD "Kerntypes" است.
- -g [namelist]
- بررسی میکند که آیا فایل namelist مربوط به vmlinux یا xen-syms حاوی دادههای دیباگ است یا خیر.
- -t
- برچسب زمانی (timestamp) خرابی سیستم را نمایش داده و خارج میشود.
- -L
- تلاش میکند تا با فراخوانی mlockall(MCL_CURRENT|MCL_FUTURE) در طول مقداردهی اولیه، تمام فضای آدرس مجازی خود را در حافظه قفل کند. اگر فراخوانی سیستمی ناموفق باشد، یک پیام خطا نمایش داده میشود، اما نشست ادامه مییابد.
- -c tty-device
- دستگاه tty-device را به عنوان کنسول مورد استفاده برای پیامهای دیباگ باز میکند.
- -p page-size
- اگر اندازه صفحه پردازنده از طریق فایل دامپ قابل تشخیص نباشد و نتوان از پیشفرض پردازنده استفاده کرد، از page-size استفاده میکند.
- -o filename
- فقط در قالب MEMORY-IMAGE@ADDRESS برای فایلهای دامپ خام RAM استفاده میشود و نام فایل یک vmcore با ساختار ELF جدید را مشخص میکند که ایجاد شده و به عنوان فایل دامپ استفاده خواهد شد. این فایل ذخیره میشود تا امکان استفاده در آینده به عنوان یک vmcore مستقل فراهم شود و جایگزین فایل دامپ خام RAM اولیه گردد.
-m
گزینه=مقدار
--machdep
گزینه=مقدار
X86_64: phys_base=<physical-address> irq_eframe_link=<value> irq_stack_gap=<value> max_physmem_bits=<value> kernel_image_size=<value> vm=orig (محدودههای آدرس حافظه مجازی قبل از 2.6.11) vm=2.6.11 (محدودههای آدرس حافظه مجازی 2.6.11 و بعد از آن) vm=xen (محدودههای آدرس حافظه مجازی هسته Xen) vm=xen-rhel4 (محدودههای آدرس مجازی هسته Xen در RHEL4) vm=5level (جداول صفحهای ۵ سطحی) page_offset=<PAGE_OFFSET-value> PPC64: vm=orig vm=2.6.14 (جداول صفحهای ۴ سطحی) IA64: phys_start=<physical-address> init_stack_size=<size> vm=4l (جداول صفحهای ۴ سطحی) ARM: phys_base=<physical-address> ARM64: phys_offset=<physical-address> kimage_voffset=<kimage_voffset-value> max_physmem_bits=<value> vabits_actual=<value> X86: page_offset=<CONFIG_PAGE_OFFSET-value>
- -x
- ماژولهای افزونه (extension modules) را بهطور خودکار از یک شاخه خاص بارگذاری میکند. اگر شاخهای در متغیر محیطی CRASH_EXTENSIONS تعیین شده باشد، از آن شاخه استفاده خواهد شد. در غیر این صورت از /usr/lib64/crash/extensions (معماریهای ۶۴ بیتی) یا /usr/lib/crash/extensions (معماریهای ۳۲ بیتی) استفاده میشود؛ اگر وجود نداشته باشند، شاخه ./extensions به کار خواهد رفت.
- --active
- فقط تسکهای فعال در هر CPU را ردگیری میکند.
- --buildinfo
- تاریخ ساخت باینری crash، شناسه کاربری (UID) سازنده، نام میزبان ماشینی که ساخت روی آن انجام شده، معماری هدف، شماره نسخه و نسخه کامپایلر را نمایش میدهد.
- --memory_module modname
- از modname به عنوان یک ماژول جایگزین هسته برای ماژول crash.ko که دستگاه /dev/crash را میسازد، استفاده میکند.
- --memory_device device
- از device به عنوان یک دستگاه جایگزین برای دستگاههای /dev/crash، /dev/mem یا /proc/kcore استفاده میکند.
- --log dumpfile
- محتویات بافر لاگ هسته را دامپ میکند. آرگومان namelist هسته الزامی نیست، اما فایل دامپ باید حاوی دادههای VMCOREINFO برگرفته از هدر اصلی /proc/vmcore ELF باشد. نکته: این گزینه منسوخ شده است و برای هستههای نسخه ۵.۱۰ به بعد کار نخواهد کرد.
- --no_kallsyms
- از اطلاعات نمادهای ایجادشده توسط kallsyms موجود در فایلهای شیء ماژولهای هسته استفاده نمیکند.
- --no_modules
- به هیچ اطلاعاتی مربوط به ماژولهای هسته دسترسی پیدا نکرده و آنها را نمایش نمیدهد.
- --no_ikconf
- تلاشی برای خواندن دادههای پیکربندی که در هستههای دارای CONFIG_IKCONFIG تعبیه شدهاند، انجام نمیدهد.
- --no_data_debug
- صحت تمام آفستهای اعضای ساختارها و اندازههای ساختارهایی را که استفاده میکند، اعتبارسنجی نمیکند.
- --no_kmem_cache
- زیرساخت کش اسلب (slab cache) هسته را مقداردهی اولیه نمیکند و دستوراتی که از دادههای مرتبط با kmem_cache استفاده میکنند، کار نخواهند کرد.
- --no_elf_notes
- برای ردگیری پشته (backtrace)، از ثباتهای (registers) یادداشتهای ELF NT_PRSTATUS ذخیرهشده در هدر فشرده kdump استفاده نمیکند.
- --kmem_cache_delay
- مقداردهی اولیه زیرساخت کش اسلب هسته را تا زمانی که توسط یک دستور زمان اجرا مورد نیاز باشد، به تعویق میاندازد.
- --readnow
- این پرچم را به ماژول تعبیهشده gdb ارسال میکند که راهبرد دومرحلهای آن را برای خواندن جداول نمادها از NAMELIST نادیده میگیرد.
- --smp
- مشخص میکند که سیستم در حال تحلیل دارای یک هسته SMP است.
-v
--version
- --cpus number
- تعداد CPUها ( number) در سیستم SMP در حال تحلیل را مشخص میکند.
- --osrelease dumpfile
- رشته OSRELEASE vmcoreinfo را از هدر dumpfile مربوط به kdump نمایش میدهد.
- --build-id dumpfile
- رشته BUILD-ID vmcoreinfo را از هدر dumpfile مربوط به kdump نمایش میدهد. نکته: این گزینه فقط برای هسته نسخه ۵.۹ به بعد کار میکند؛ در غیر این صورت "unknown" را چاپ کرده و با وضعیت غیرصفر خارج میشود.
- --hyper
- نشست را مجبور میکند که به عنوان هایپروایزر Xen اجرا شود.
- --p2m_mfn pfn
- هنگامی که هایپروایزر Xen یا هسته dom0 آن دچار خرابی میشود، فایل دامپ معمولاً با هایپروایزر Xen یا هسته dom0 تحلیل میشود. همچنین امکان تحلیل هر یک از هستههای مهمان domU نیز وجود دارد، به شرطی که مقدار pfn در pfn_to_mfn_list_list هسته مهمان همراه با NAMELIST و فایل دامپ آن در خط فرمان وارد شود.
- --xen_phys_start physical-address
- آدرس فیزیکی پایه برای بخش کد (text) و دادههای ایستا در هایپروایزر Xen را برای فایلهای دامپ xendump قدیمیتر که این اطلاعات را در هدر فایل دامپ ارسال نکردهاند، فراهم میکند.
- --zero_excluded
- اگر ابزار makedumpfile(8) یک فایل دامپ فشرده kdump را فیلتر کرده باشد تا انواع مختلف صفحات غیرضروری را حذف کند، یا یک فایل دامپ فشرده یا ELF kdump را به دلیل خطای ENOSPC یا خطاهای دیگر در حین ایجاد ناقص علامتگذاری کرده باشد، هر تلاشی برای خواندن صفحات مفقود با شکست مواجه میشود. با این پرچم، خواندن از هر یک از این صفحات حافظه پر از صفر را بازمیگرداند.
- --no_panic
- تلاشی برای یافتن تسکی که هنگام خرابی هسته در حال اجرا بوده است، انجام نمیدهد. زمینه اولیه را روی تسک "swapper" در پردازنده ۰ تنظیم میکند.
- --more
- از /bin/more به عنوان ابزار پیمایش خروجی دستورات استفاده میکند و مقدار پیشفرض /usr/bin/less و هر تنظیمی در ./.crashrc یا $HOME/.crashrc را لغو میکند.
- --less
- از /usr/bin/less به عنوان ابزار پیمایش خروجی دستورات استفاده میکند و هر تنظیمی در ./.crashrc یا $HOME/.crashrc را نادیده میگیرد.
- --hex
- مبنای پیشفرض خروجی دستورات را روی ۱۶ (هگزادسیمال) تنظیم میکند و مبنای پیشفرض ۱۰ و هر تنظیم مبنایی در ./.crashrc یا $HOME/.crashrc را لغو میکند.
- --dec
- مبنای پیشفرض خروجی دستورات را روی ۱۰ (دهدهی) تنظیم میکند و هر تنظیم مبنایی در ./.crashrc یا $HOME/.crashrc را لغو میکند. این حالت پیشفرض است.
- --CRASHPAGER
- از دستور صفحهبندی خروجی تعریفشده در متغیر محیطی CRASHPAGER استفاده میکند و هر تنظیمی در ./.crashrc یا $HOME/.crashrc را نادیده میگیرد.
- --no_scroll
- خروجی دستورات زمان اجرا را به هیچ دستور پیمایشی ارسال نمیکند.
- --no_strip
- نام نمادهای کپیشده (cloned) از بخش کدهای هسته را حذف نمیکند.
- --no_crashrc
- دستورات موجود در $HOME/.crashrc یا ./.crashrc را اجرا نمیکند.
- --mod directory
- هنگام بارگذاری دادههای debuginfo ماژولهای هسته با دستور mod -S، فایلهای شیء آنها را به جای مکان استاندارد در directory جستجو میکند.
- --src directory
- کد منبع هسته را به جای مکان استانداردی که در دادههای debuginfo کامپایل شده، در شاخه مشخصشده جستجو میکند.
- --kaslr offset|auto
- اگر یک هسته x86، x86_64، s390x یا loongarch64 با CONFIG_RANDOMIZE_BASE پیکربندی شده باشد، مقدار offset برابر با تفاوت بین مقادیر نمادهای کامپایلشده در فایل vmlinux و مقادیر جابهجاشده (relocated) تحت KASLR آنها خواهد بود. در صورت تنظیم روی auto، مقدار آفست KASLR بهطور خودکار محاسبه میشود.
- --reloc size
- هنگام تحلیل هستههای زنده x86 که با مقدار CONFIG_PHYSICAL_START بزرگتر از مقدار CONFIG_PHYSICAL_ALIGN پیکربندی شدهاند، لازم است اندازه جابهجایی (relocation size) برابر با تفاوت بین این دو مقدار وارد شود.
- --hash count
- تعداد سرهای صف جدول درهمسازی (hash queue heads) داخلی را که برای جمعآوری و اعتبارسنجی لیستها استفاده میشوند، تعیین میکند. مقدار پیشفرض ۳۲۷۶۸ است.
- --max-malloc-bufs size
- مقدار MAX_MALLOC_BUFS را روی size تنظیم میکند. حداقل مقدار مجاز ۳۰۷۲ است.
- --minimal
- نشستی را ایجاد میکند که فقط به دستورات log، dis، rd، sym، eval، set و exit محدود است. این گزینه ممکن است راهکاری برای استخراج برخی اطلاعات حداقلی/سریع از یک فایل دامپ خراب یا ناقص، یا در شرایطی باشد که یکی از چندین روال مقداردهی اولیه زیرسیستمهای هسته باعث متوقف شدن نشست crash میشود.
- --kvmhost [32|64]
- هنگام بررسی فایل دامپ مهمان KVM در معماری x86، این گزینه مشخص میکند که میزبان KVM ایجادکننده فایل دامپ یک ماشین x86 (۳۲ بیتی) یا x86_64 (۶۴ بیتی) بوده است و مقدار بهدستآمده خودکار را نادیده میگیرد.
- --kvmio <size>
- اندازه حفره I/O مهمان KVM که بهطور خودکار محاسبه شده است را بازنویسی میکند.
- --offline [show|hide]
- خروجی دستورات مربوط به CPUهای آفلاین را نمایش میدهد یا مخفی میکند. حالت پیشفرض show است.
دستورات (COMMANDS)
هر دستور crash بهطور کلی در یکی از دستهبندیهای زیر قرار میگیرد:
- نمایش نمادین (Symbolic display)
- نمایش متن/دادههای هسته که با استفاده کامل از قدرت gdb ساختارهای داده را بهصورت نمادین قالببندی و نمایش میدهد.
- وضعیت سیستم (System state)
- اکثر دستورات crash شامل مجموعهای از دستورات «آگاه از هسته» هستند که زیرسیستمهای مختلف هسته را در سطح کل سیستم یا به ازای هر تسک بررسی میکنند.
- توابع کاربردی (Utility functions)
- مجموعهای از دستورات کمکی مفید برای اهداف مختلف، برخی ساده و برخی بسیار قدرتمند.
- کنترل نشست (Session control)
- دستوراتی که خود نشست crash را کنترل میکنند.
فهرست الفبایی زیر شامل یک نمای کلی بسیار ساده از هر دستور crash است. با این حال، از آنجا که دستورات جداگانه اغلب گزینههای متعددی دارند که منجر به خروجیهای بسیار متفاوتی میشود، پیشنهاد میشود توضیحات کامل هر دستور را با اجرای crash -h <command> یا در طول یک نشست crash با وارد کردن ساده help command مشاهده کنید.
- *
- «اشارهگر به» (pointer to) نام اختصاری برای دستورات struct یا union است. این دستور محتویات یک ساختار یا یونیون هسته را نمایش میدهد.
- alias
- یک نام مستعار تککلمهای برای یک دستور ایجاد میکند.
- ascii
- یک جدول اسکی را نمایش میدهد یا یک مقدار عددی را به اجزای اسکی آن ترجمه میکند.
- bpf
- اطلاعات مربوط به برنامهها و نقشههای eBPF بارگذاریشده فعلی را ارائه میدهد.
- bt
- ردگیری پشته هسته (backtrace) یک تسک را نمایش میدهد. اگر گزینه -a به آن داده شود، ردگیری پشته تسکهای فعال در تمام CPUها را نمایش میدهد. اغلب با دستور foreach برای نمایش ردگیری پشته تمام تسکها با یک دستور استفاده میشود.
- btop
- یک مقدار بایتی (آفست فیزیکی) را به شماره صفحه آن ترجمه میکند.
- dev
- دادههای مربوط به تخصیص دستگاههای نویسهای و بلوکی، استفاده از درگاه I/O، استفاده از حافظه I/O و دادههای دستگاه PCI را نمایش میدهد.
- dis
- حافظه را دیزاسمبل میکند؛ خواه کل توابع هسته باشد، خواه از یک مکان برای تعداد مشخصی دستورالعمل، یا از ابتدای یک تابع تا یک مکان حافظه مشخص.
- eval
- یک عبارت یا نوع عددی را ارزیابی کرده و نتیجه را در مبناهای هگزادسیمال، دهدهی، هشتهشتی و دودویی نمایش میدهد.
- exit
- باعث خروج از crash میشود.
- extend
- ماژولهای افزونه شیء اشتراکی (shared object) را در crash بهصورت پویا بارگذاری یا تخلیه میکند.
- files
- اطلاعات مربوط به فایلهای باز را در یک زمینه (context) نمایش میدهد.
- foreach
- یک دستور مشخص را برای تسکهای مشخصشده (یا همه تسکها) در سیستم تکرار میکند.
- fuser
- تسکهایی را که از فایل یا سوکت مشخصشده استفاده میکنند، نمایش میدهد.
- gdb
- آرگومان خود را به ماژول تعبیهشده gdb ارسال میکند. این دستور برای اجرای دستورات gdb که همنام با دستورات crash هستند مفید است.
- help
- به تنهایی منوی دستورات را نمایش میدهد؛ اگر پس از آن نام یک دستور بیاید، توضیحات کامل آن دستور، گزینهها و مثالهای آن نمایش داده میشود. خروجی آن بسیار کاملتر و مفیدتر از این صفحه راهنما است.
- ipcs
- دادههای مربوط به امکانات IPC در System V را نمایش میدهد.
- irq
- دادههای مربوط به شمارههای درخواست وقفه (IRQ) و مدیریت نیمه پایینی (bottom-half) وقفه را نمایش میدهد.
- kmem
- اطلاعات مربوط به استفاده از حافظه هسته را نمایش میدهد.
- list
- محتویات یک لیست پیوندی را نمایش میدهد.
- log
- محتویات log_buf هسته را به ترتیب زمانی نمایش میدهد.
- mach
- دادههای مختص نوع ماشین را نمایش میدهد.
- mod
- اطلاعات مربوط به ماژولهای هسته نصبشده فعلی را نمایش میدهد، یا اطلاعات نمادین یا دیباگ را در مورد ماژولهای مشخصشده هسته اضافه یا حذف میکند.
- mount
- اطلاعات مربوط به سیستمفایلهای سوارشده (mounted) فعلی را نمایش میدهد.
- net
- دادههای مختلف مربوط به شبکه را نمایش میدهد.
- p
- آرگومانهای خود را برای ارزیابی و نمایش به دستور "print" در gdb ارسال میکند.
- ps
- وضعیت فرآیند را برای فرآیندهای مشخصشده، یا تمام فرآیندهای موجود در سیستم نمایش میدهد.
- pte
- محتوای هگزادسیمال یک مدخل جدول صفحه (PTE) را به آدرس صفحه فیزیکی و تنظیمات بیتهای صفحه ترجمه میکند.
- ptob
- شماره فریم صفحه را به مقدار بایتی آن ترجمه میکند.
- ptov
- یک آدرس فیزیکی هگزادسیمال را به یک آدرس مجازی هسته ترجمه میکند.
- q
- نام مستعاری برای دستور "exit" است.
- rd
- محتویات حافظه را نمایش میدهد، در حالی که خروجی به چندین شیوه مختلف قالببندی شده است.
- repeat
- یک دستور را بهطور نامحدود تکرار میکند و در صورت تمایل، چند ثانیه مشخص بین هر بار اجرای دستور تأخیر ایجاد میکند.
- runq
- تسکهای موجود در صف اجرا (run queue) را نمایش میدهد.
- sbitmapq
- محتویات ساختار sbitmap_queue و بیتهای استفادهشده در بیتمپ را دامپ میکند. همچنین دامپ آرایهای از ساختارهای مرتبط با sbitmap_queue را نمایش میدهد.
- search
- محدودهای از فضای حافظه کاربر یا هسته را برای یک مقدار مشخص جستجو میکند.
- set
- یک زمینه جدید تنظیم میکند، یا زمینه فعلی را برای نمایش دریافت میکند.
- sig
- دادههای مدیریت سیگنال یک یا چند تسک را نمایش میدهد.
- struct
- یک تعریف ساختار یا محتویات یک ساختار هسته در یک آدرس مشخص را نمایش میدهد.
- swap
- اطلاعات مربوط به هر دستگاه حافظه تعویض (swap) پیکربندیشده را نمایش میدهد.
- sym
- یک نماد را به آدرس مجازی آن، یا یک آدرس مجازی ایستای هسته را به نماد آن (یا در صورت مناسب بودن، به مقدار نماد بهعلاوه آفست) ترجمه میکند.
- sys
- دادههای مختص سیستم را نمایش میدهد.
- task
- محتویات یک task_struct را نمایش میدهد.
- tree
- محتویات یک درخت سرخ-سیاه (red-black tree) یا درخت رادیکس (radix tree) را نمایش میدهد.
- timer
- مدخلهای صف تایمر، اعم از سبک قدیمی و جدید را به ترتیب زمانی نمایش میدهد.
- union
- مشابه دستور struct است، با این تفاوت که روی یونیونهای هسته کار میکند.
- vm
- اطلاعات اولیه حافظه مجازی یک زمینه را نمایش میدهد.
- vtop
- یک آدرس مجازی کاربر یا هسته را به آدرس فیزیکی آن ترجمه میکند.
- waitq
- لیست صف انتظار را پیمایش کرده و تسکهایی را که در صف انتظار مشخصشده مسدود شدهاند نمایش میدهد.
- whatis
- تعریف ساختارها، یونیونها، typedefها یا نمادهای متنی/دادهای را نمایش میدهد.
- wr
- محتویات حافظه را در یک سیستم زنده تغییر میدهد. این دستور فقط در صورتی قابل استفاده است که /dev/mem فایل دستگاه مورد استفاده برای دسترسی به RAM سیستم باشد و بدیهی است که باید با احتیاط فراوان استفاده شود.
هنگامی که crash با یک فایل باینری هایپروایزر Xen به عنوان NAMELIST فراخوانی میشود، مجموعه دستورات کمی تغییر میکند. دستورات *، alias، ascii، bt، dis، eval، exit، extend، gdb، help، list، log، p، pte، rd، repeat، search، set، struct، sym، sys، union، whatis، wr و q همانند بالا هستند. دستورات زیر مختص هایپروایزر Xen میباشند:
- domain
- محتویات ساختار دامنهها را برای دامنههای انتخابشده یا همه دامنهها نمایش میدهد.
- doms
- وضعیت دامنهها را برای دامنههای انتخابشده یا همه دامنهها نمایش میدهد.
- dumpinfo
- اطلاعات دامپ Xen را برای CPUهای انتخابشده یا همه CPUها نمایش میدهد.
- pcpus
- اطلاعات CPU فیزیکی را برای CPUهای انتخابشده یا همه CPUها نمایش میدهد.
- vcpus
- وضعیت vcpu را برای vcpuهای انتخابشده یا همه vcpuها نمایش میدهد.
فایلها (FILES)
- .crashrc
- دستورات مقداردهی اولیه. این فایل میتواند در شاخه HOME کاربر و/یا شاخه جاری قرار داشته باشد. دستورات موجود در فایل .crashrc در شاخه HOME قبل از دستورات موجود در فایل .crashrc شاخه جاری اجرا میشوند.
محیط (ENVIRONMENT)
- EDITOR
- ورودی دستورات با استفاده از readline(3) خوانده میشود. اگر EDITOR روی emacs یا vi تنظیم شده باشد، از کلیدهای میانبر مناسب استفاده میشود. اگر EDITOR تنظیم نشده باشد، از vi استفاده میشود. این تنظیم را میتوان با دستورات set vi یا set emacs موجود در یک فایل .crashrc، یا با وارد کردن -e emacs در خط فرمان crash لغو کرد.
- CRASHPAGER
- اگر CRASHPAGER تنظیم شده باشد، مقدار آن به عنوان نام برنامهای که خروجی دستورات به آن ارسال میشود، استفاده خواهد شد. در غیر این صورت، خروجی دستورات بهطور پیشفرض به /usr/bin/less -E -X ارسال میشود.
- CRASH_MODULE_PATH
- یک درخت شاخه جایگزین را برای جستجوی فایلهای شیء ماژولهای هسته مشخص میکند.
- CRASH_EXTENSIONS
- شاخهای حاوی ماژولهای افزونه را مشخص میکند که در صورت استفاده از گزینه خط فرمان -x بهطور خودکار بارگذاری میشوند.
نکات (NOTES)
اگر crash کار نمیکند، به دنبال نسخه جدیدتر باشید: تکامل مداوم هسته مکرراً بهروزرسانیهای crash را ضروری میسازد.
دستور set scroll off باعث میشود خروجی به جای عبور از یک برنامه صفحهبندی، مستقیماً به ترمینال ارسال شود. این گزینه به عنوان مثال زمانی مفید است که crash را در یک پنجره از emacs اجرا میکنید.
نویسنده (AUTHOR)
دیو اندرسون (Dave Anderson <anderson@redhat.com>) ابزار crash را نوشت.
- جی فنلیسون (Jay Fenlason <fenlason@redhat.com>) و دیو اندرسون (Dave Anderson <anderson@redhat.com>) این صفحه راهنما را نوشتند.
همچنین ببینید (SEE ALSO)
دستور help درون crash مستندات کاملتر و دقیقتری نسبت به این صفحه راهنما ارائه میدهد.
https://github.com/crash-utility - صفحه اصلی ابزار crash.