زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه

برای تعیین هسته، باید با استفاده از یک کابل صفر یا مودم به کامپیوتر متصل شوید. یک کامپیوتر اشکالزدایی "میزبان" نامیده می شود، و نام "هدف" یک مشکل را دریافت خواهد کرد.

هر دو کامپیوتر باید کار خود را در حال اجرا همان نسخه از ویندوز، و فایل های شخصیتی برای کامپیوتر هدف باید بر روی کامپیوتر میزبان نصب شود. فایل های نمادین در CD نصب ویندوز در دایرکتوری پشتیبانی / Debug ارائه شده است.

برای فعال کردن اشکال زدایی، شما باید تغییرات را به فایل boot.ini بر روی کامپیوتر هدف انجام دهید.

1. ویژگی های فایل boot.ini را تغییر دهید:

attrib: \\ boot.ini - r - s

2. این فایل را ویرایش کنید و در رشته راه اندازی ویندوز اضافه کردن پارامتر / اشکال زدایی (به منظور گزارش سیستم در مورد نیاز به دانلود در رم اشکال زدایی هسته دانلود ویندوز). پارامترهای اضافی این ها / debugport هستند که سیستم را گزارش می دهند که پورت COM باید استفاده شود (به طور پیش فرض COM2) و / baudrate - برای مشخص کردن نرخ انتقال داده ها (پیش فرض، نرخ 19200 Baud، اما بهتر است از 9600 استفاده شود). مثلا:


Multi (0) Rdisk (0) Partition (0) \\ Windows \u003d "Windows NT" / Debug / Debugport \u003d COM2 / Baudrate \u003d 9600

3. فایل را ذخیره کنید

4. ویژگی های قبلی boot.ini را نصب کنید:

attrib: \\ boot.ini + r + s

که در این مثال کامپیوتر هدف اتصال را از طریق پورت COM2 با سرعت 9600 بیت / ثانیه اجازه داد.

کامپیوتر میزبان باید با استفاده از پارامترهای مورد نیاز برای اشکال زدایی پیکربندی شود. علاوه بر این، فایل های نمادین باید نصب شود. برای نصب آنها، به دایرکتوری \\ support \\ debug در CD نصب بروید و دستور زیر را وارد کنید:

expnddsym : <целевой диск и каталог>

مثلا:

expnddsym F: D: \\ Symbols

نصب ممکن است کمی طول بکشد. به یاد داشته باشید که اگر بسته های به روز رسانی بر روی کامپیوتر هدف نصب شده باشند، این بسته های شخصیتی نیز باید بر روی کامپیوتر میزبان نصب شوند. فایل های نمادین برای بسته های به روز رسانی را می توان از سایت مایکروسافت دانلود کرد.

مرحله بعدی پیکربندی متغیرهای محیطی مورد نیاز برای اشکال زدایی، به عنوان مثال، متغیرهای نشان دهنده مکان فایل های نمادین و غیره است. شرح زیر شرح این متغیرها است.

شرح متغیرهای سیستمیک

تعریف این متغیرها را می توان در آن قرار داد فایل فرمان به منظور جلوگیری از ورود به دستورات مربوطه زمانی که هر بار دانلود:

اکو
تنظیم _nt_debug_port \u003d com2
تنظیم _nt_debug_baud_rate \u003d 9600
تنظیم _nt_symbol_path \u003d د: \\ نمادها \\ i386
مجموعه _nt_log_file_open \u003d d: \\ debug \\ logs \\ debug.log

حالا شما باید نرم افزار Debug Core را که در پوشه پشتیبانی \\ debug قرار دارد کپی کنید<процессор> در CD نصب (پشتیبانی \\ debug \\ i386). ساده ترین راه برای کپی کردن کل دایرکتوری به طور کامل است، زیرا دارای اندازه کوچک (حدود 2.5 مگابایت) است. برای پلت فرم i386، Debugger مورد استفاده قرار می گیرد، که به عنوان فایل i386kd.exe عرضه می شود. اشکال زدایی با استفاده از فرمان i386kd شروع می شود. برای وارد کردن فرمان، روی کلید ترکیبی کلیک کنید و منتظر بمانید تا دعوت به نظر برسد خط فرمان KD\u003e.

Debuggers حالت هسته بین پردازنده و سیستم عامل است. این به این معنی است که هنگام توقف اشکال Debugger حالت هسته، سیستم عامل نیز به طور کامل متوقف می شود. آسان است که کشف کنید که انتقال سیستم عامل یک توقف تیز مفید است زمانی که شما با مشکلات تایمر و هماهنگ سازی کار می کنید. با این حال، به استثنای یک اشکال زدایی، که در بخش زیر توضیح داده می شود (در بخش "Softlce Debugger" این فصل)، غیر ممکن است کد کاربر کاربر را با استفاده از Debuggers Mode Kernel نادیده بگیریم.

Debuggers حالت هسته ای خیلی زیاد نیست. در اینجا برخی از آنها هستند: ویندوز 80386 Debugger (WDEB386)، Debugger هسته (1386KD)، Windbg و Softlce. هر یک از این debuggers به \u200b\u200bطور خلاصه در بخش های زیر شرح داده شده است.

WDEB386 اشکال زدایی

WDEB386 یک اشکال زدایی هسته ویندوز 98 است که به عنوان بخشی از SDK پلت فرم توزیع شده است. این اشکال زدایی تنها برای توسعه دهندگان مفید است، نوشتن درایورهای مجازی دستگاه های ویندوز 98 (VXD). همانند اکثر Debuggers Mode Kernel برای سیستم عامل های ویندوز، Debugger WDEB386 نیاز به دو دستگاه و کابل صفر مودم برای عملیات دارد. دو دستگاه ضروری هستند، زیرا بخشی از اشکال زدایی، که بر روی دستگاه هدف انجام می شود، دسترسی محدودی به سخت افزار آن دارد، به طوری که خروجی خود را ارسال می کند و دستورات دیگری را از دستگاه دریافت می کند.

Debugger WDEB386 یک داستان جالب دارد. این به عنوان یک ابزار پس زمینه داخلی مایکروسافت در ویندوز 3.0 آغاز شد. استفاده از آن دشوار بود، و او پشتیبانی کافی برای اشکال زدایی نداشت کد منبع و دیگر خواص دلپذیر که بصری C ++ و ویژوال بیسیک دفاع از ما خراب شده است.

تیم "نقطه" (نقطه) مهمترین ویژگی WDEB386 است. از طریق اینترانت INT 41، شما می توانید WDEB386 را به منظور اضافه کردن دستورات گسترش دهید. این افزونه به نویسندگان رانندگان VXD اجازه می دهد تا دستورات سفارشی اشکال زدایی را ایجاد کنند که دسترسی آزاد به اطلاعات را در دستگاه های مجازی خود دارند. اشکال زدایی نسخه ویندوز 98 از بسیاری از دستورات نقطه ای پشتیبانی می کند که به شما امکان می دهد وضعیت دقیق سیستم عامل را در هر نقطه از فرآیند اشکال زدایی مشاهده کنید.

i386kd اشکال زدایی

ویندوز 2000 از ویندوز 98 متفاوت است، در حالی که بخش واقعی Debugger حالت هسته بخشی از ntoskrnl است. EXE - هسته اصلی عملیات سیستم های ویندوز 2000. این اشکال زدایی هر دو به صورت رایگان (فارغ التحصیلی) و در تنظیمات سیستم عامل ثابت شده (اشکال زدایی) موجود است. برای فعال کردن اشکال زدایی در حالت هسته، پارامتر bootloader / debug را برای بوت شدن تنظیم کنید. INI و علاوه بر این، گزینه bootloader / debugport، اگر شما نیاز به تعیین مقدار پورت ارتباطی از حالت هسته هسته، متفاوت از سکوت (SOM1). i386KD بر روی دستگاه خود انجام می شود و با دستگاه ویندوز 2000 از طریق کابل مودم صفر ارتباط برقرار می کند.

NTOSKRNL هسته حالت اشکال زدایی. EXE تنها چیزی است که برای کنترل CPU کافی است تا سیستم عامل را می توان از بین برد. اکثر کارهای اشکال زدایی - پردازش نماد، نقاط وقفه گسترش یافته و جداسازی - در کنار 1386KD انجام می شود. در یک زمان، کیت درایور دستگاه ویندوز NT 4 (DDK) پروتکل مورد استفاده در کابل مودم صفر را ثبت کرده است. با این حال، مایکروسافت آن را دیگر نمی کند.

قدرت 1386KD واضح است اگر شما به تمام دستورات که ارائه می دهد برای دسترسی به حالت داخلی ویندوز 2000 نگاه می کنید. دانش مکانیسم عملیات رانندگان دستگاه در ویندوز 2000 به برنامه نویس کمک خواهد کرد تا خروجی بسیاری از دستورات را نظارت کند. علیرغم تمام قدرت شما، I386KD تقریبا هرگز اعمال نمی شود، زیرا این یک برنامه کنسول است که بسیار خسته کننده برای استفاده از سطوح منبع اشکال است.

  • نویسندگان:

    Barinov S.S.، شوچنکو O.G.

  • سال:
  • منبع:

    informatics I. مهندسی کامپیوتر / materials vi international کنفرانس علمی و فنی دانش آموزان، دانشجویان تحصیلات تکمیلی و دانشمندان جوان - 23 تا 25 نوامبر 2010، دونتسک، دوناتو. - 2010. - 448 پ.

حاشیه نویسی

تجزیه و تحلیل تطبیقی \u200b\u200bاز اشکال زدایی حالت کاربر و حالت هسته به سیستم عامل اعمال می شود. ویندوز مایکروسافت.، تفاوت های متمایز و مشکلات سازماندهی اشکال زدایی دوم. بر اساس نتایج به دست آمده، الزامات اصلی برای ساخت اشکالزدای رژیم هسته ای در صورت اشکال زدایی اورژانس و تعاملی است. تجزیه و تحلیل انجام شد راه حل های موجود برای انطباق با الزامات. به طور خاص، توجه ویژه به Debugger ویندوز ویندوز مایکروسافت پرداخت می شود.

بخش اصلی

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

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

به طور کلی، ما می توانیم در مورد فقدان اشکال زدایی هسته صحبت کنیم. اگر چه این به این معنی در دسترس است، اغلب لازم نیست که در مورد گزینه ها صحبت کنید. به عنوان مثال، Debugger Debugger ویندوز مایکروسافت دارای آستانه ورود بیش از حد بالا است. بسیاری از برنامه نویسان در مورد اولین تجربه منفی در هنگام ملاقات با او صحبت می کنند، و بسیاری از امکانات آن همچنان سوزانده می شود.

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

    debuggers مدرن زیر را ارائه می دهد توابع اساسی:
  • اشکال زدایی در سطح کد منبع؛
  • مدیریت اعدام؛
  • مشاهده و تغییر حافظه؛
  • مشاهده و تغییر محتویات ثبت کننده پردازنده؛
  • مشاهده پشته تماس

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

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

هنگام قطع کد هسته اصلی، معضل زیر رخ می دهد. Debugger برای ارتباط با برنامه نویس از رابط کاربری استفاده می کند. کسانی که. در حداقل، بخش قابل مشاهده Debugger در حالت کاربر انجام می شود و به طور طبیعی از رابط برنامه نویسی برنامه استفاده می کند ( API ویندوز)، که به نوبه خود به ماژول های حالت هسته متکی است. بنابراین، تعلیق کد هسته اصلی می تواند منجر به مسدود شدن متقابل شود: سیستم پاسخ به درخواست های کاربر را متوقف خواهد کرد.

برای دسترسی به حافظه هسته، اجزای اشکال زدایی نیز باید در حالت هسته انجام شود. این منجر به ظهور دو مشکل در یک بار می شود، که یک نتیجه آشکار از سازمان حافظه در حالت پردازنده محافظت شده است.

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

ویژگی خاص این است که هنگام تماس با سیستم تماس، سیستم عامل ویندوز زمینه را تغییر نمی دهد. با توجه به این، کد MODE KERNEL می تواند از آدرس مجازی حالت کاربر استفاده کند.

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

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

اگر کد برنامه Debugger مجبور به استفاده از سطح بالایی از پرس و جو وقفه (سطوح درخواست وقفه، IRQL)، رفتار توصیف شده نقض شده است. با IRQL، که با یا بیش از مدیریت حافظه IRQL همخوانی دارد، بانوی قادر به بارگذاری صفحه گمشده نخواهد بود، زیرا سیستم عامل خطای صفحه وقفه را مسدود می کند. این منجر به فروپاشی سیستم عامل خواهد شد.

اشکال زدایی برای تعاملی و اضطراری پذیرفته شده است. با اشکال زدایی محلی تعاملی، اشکال زدایی در همان سیستم به عنوان شیء اشکال زدایی انجام می شود. با اشکال زدایی از راه دور تعاملی، اشکال زدایی و شیء اشکال زدایی در سیستم های مختلف انجام می شود. هنگامی که اشکال زدایی کد هسته، سیستم باید تحت نظارت قرار گیرد، از اولین مراحل دانلود آن، زمانی که شبکه هنوز عملکرد نمی کند، از این رو، رابط های سریال ساده مانند COM، FireWire، USB، برای برقراری ارتباط سیستم استفاده می شود. به تازگی، با توجه به روند توسعه مجازی سازی نرم افزار در سطوح مختلف انتزاع، به طور فزاینده جذب می شود ماشین های مجازی. Guestside OS عمل می کند به عنوان یک اشکال زدایی، سیستم عامل قرار داده شده شامل رابط کاربر Debugger است.

بنابراین، برای اشکال زدایی اضطراری، شما نیازی به نصب یک ابزار اشکال زدایی بر روی کامپیوتر تست ندارید. توزیع سیستم عامل ویندوز شامل مکانیسم هایی برای اجرای اشکال زدایی اضطراری است. قبل از راه اندازی مجدد، سیستم عامل می تواند اطلاعاتی در مورد دولت خود را ذخیره کند که توسعه دهنده می تواند علت را تجزیه و تحلیل و پیدا کند. این اطلاعات ذخیره شده در یک فایل، یک تخلیه حافظه نامیده می شود.

ابزار اصلی اشکال زدایی حالت اصلی توسط سازنده سیستم عامل ویندوز در چارچوب یک بسته توزیع رایگان ارائه می شود " ابزارهای اشکال زدایی برای ویندوز. " ابزار شامل دستگاه های گرافیکی و کنسول WindBG و KD می باشد (به ترتیب ویندوز ویندوز). کار این debuggers بر اساس مکانیسم های ارائه شده توسط توسعه دهندگان سیستم عامل است و در هسته آن گذاشته شده است.

حالت اصلی برای ویندوز Debugger حالت مترجم فرماندهی است. با تشکر ساختار مدولارهمراه با توسعه دهندگان حمل شده دستورات ویندوز Debugger از ماژول های شخص ثالث به نام Extensions پشتیبانی می کند. در واقع، اکثر دستورات تعبیه شده نیز به صورت پسوند تزئین شده اند.

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

یک ماژول پسوند برای ویندوز Debugger به نام LiveKD، ایجاد شده توسط مارک Russinianovich وجود دارد که به برخی از موارد، اشکالزدایی تعاملی محلی را اجرا می کند. LiveKD در GO یک ردیف از حافظه سیستم کار را ایجاد می کند و از آن برای اشکال زدایی استفاده می کند.

ابزار "اشکال زدایی برای ویندوز" به طور مرتب به روز می شود و از تمام سیستم عامل های مدرن ویندوز پشتیبانی می کند.

Debugger Kernel Softice، تولید شده توسط Compuware در بسته نرم افزاری DriversTudio، به طور سنتی جایگزین برای "ابزارهای اشکال زدایی برای ویندوز" است. ویژگی متمایز Softice پیاده سازی اشکال زدایی تعاملی محلی در سخت افزار پشتیبانی شده بود. اشکال زدایی تقریبا به طور کامل کنترل عملیات سیستم عامل را کنترل می کند.

از 3 آوریل 2006، فروش محصولات خانوادگی Drivertudio به دلیل "بسیاری از مشکلات فنی و تجاری، و همچنین وضعیت عمومی بازار" قطع شد. آخرین نسخه سیستم عامل، پشتیبانی از آن اجرا شد، ویندوز XP Service Pack 2. به عنوان یک قانون، به روز رسانی خدمات رابط کاربری سیستم عامل را تغییر نمی دهد، اما شماره تماس سیستم و سایر اطلاعات نامشخص می تواند تغییر را انجام دهد. Debugger Softice به آدرس های خطی دائمی داده های داخلی داده شده متکی بود. به عنوان یک نتیجه - با نگهداری سرویس Pack Pack 3 شکسته شد. بدیهی است، نسخه های بعدی بعدی سیستم عامل ویندوز نیز پشتیبانی نمی شوند.

Debugger Syser Kernel ایجاد شده توسط یک شرکت کوچک چینی Sysersoft به عنوان جایگزینی یک اشکال زدایی Softice. اولین نسخه نهایی در سال 2007 منتشر شد. مانند Softice، Debugger Syser Kernel قادر به انجام اشکال زدایی تعاملی در سیستم عامل است. پشتیبانی فقط نسخه های 32 بیتی نسخه های مدرن ویندوز است.

در این لحظه ویندوز Debugger ابزار اصلی در میان توسعه دهندگان ماژول های هسته است. همچنین از تیم توسعه سیستم عامل سیستم عامل ویندوز استفاده می کند.

چگونه می توان اشکال زدایی هسته را راه اندازی کرد؟

پاسخ کارشناسی ارشد:

در روند توسعه نرم افزار، یک جزء بسیار مهم وجود دارد - این اشکال زدایی است. به سمت برنامه های کاربردی این کار به وسیله وسیله ای که در حالت کاربر کار می کند انجام می شود و اغلب در IDE تعبیه شده است. به عنوان مثال، به عنوان مثال، راننده، Debugger هسته باید راه اندازی شود.

شما باید پردازنده را اجرا کنید تیم CMD. منوی شروع را در نوار وظیفه باز کنید. در پنجره ای که ظاهر می شود، روی "Run ..." کلیک کنید. پنجره "شروع برنامه" ظاهر می شود. در جعبه متن، CMD را وارد کنید، سپس روی دکمه OK کلیک کنید.

در حال حاضر ایجاد کنید پشتیبان گیری فایل boot.ini ابتدا مسیر نصب نسخه فعلی ویندوز را با استفاده از دستور پیدا کنید: Echo٪ SystemRoot٪

بعد، به دیسک بروید، با سیستم عامل نصب شده با وارد کردن دستگاه های دستگاه، و پس از آنها، قرار دادن روده بزرگ. با استفاده از فرمان CD، به دایرکتوری ریشه بروید. در حال حاضر با استفاده از دستور ARTRIGT، ویژگی های پنهان "پنهان"، "فقط خواندنی" و "سیستم" را از فایل boot.ini حذف کنید. Copy Command یک نسخه پشتیبان تهیه کنید و سپس ویژگی ها را به محل تنظیم کنید.

برای حذف لیست گزینه های فعلی دانلود، از دستور bootcfg / query استفاده کنید. لیست را مشاهده کنید و این مورد را بر اساس آن تنظیمات جدید با امکان اشکال زدایی در حالت هسته ایجاد کنید. شناسه ضبط بوت باید به یاد داشته باشید.

برای ایجاد یک ضبط بوت از دستور bootcfg / copy استفاده کنید. به منظور مشخص کردن شناسه ضبط که شما کپی، از پارامتر / id استفاده کنید. با استفاده از پارامتر / D، نام ضبط را تنظیم کنید که نمایش داده می شود. حالا شما باید به لیست گزینه های دانلود با استفاده از دستور bootcfg / query بازگردید و به شناسه ورودی اضافه کنید.

حالا شما باید گزینه هایی را برای شروع اشکال زدایی هسته به رکورد بوت قبلا ایجاد شده فعال کنید. اگر در دستگاه هدف اشکال زدایی کنید، فقط باید گزینه / Debug را اضافه کنید.

اگر می خواهید یک اشکال زدایی از راه دور را با اتصال کامپیوتر هدف از طریق پورت COM به دستگاه میزبان پیاده سازی کنید، سپس از گزینه های / پورت و / baud برای مشخص کردن شماره پورت و نرخ ارز استفاده کنید.

اگر از راه دور از طریق کابل FireWire (IEEE 1394 رابط) از بین ببرید، سپس به منظور فعال کردن حالت مناسب، از گزینه / DBG1394 استفاده کنید و گزینه شماره کانال را مشخص کنید.

برای اطمینان از اینکه تغییرات ساخته شده است، بوت را با استفاده از دستور bootcfg با پارامتر / پرس و جو بررسی کنید. با قرار دادن فرمان خروج، پنجره پردازنده فرمان را ببندید.

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

یک کامپیوتر را برای راه اندازی مجدد انجام دهید. بارگیری با Debugger را انتخاب کنید. ورود به سیستم و شروع به کار بر روی دستگاه هدف و یا شروع اشکال زدایی از راه دور. استفاده از ابزار به عنوان windbg و kd.

Debugger - دوم پس از کامپایلر لازم است که برنامه ها را ایجاد کنید. با این حال، بسیاری از کسانی که برنامه های کامپیوتری را می نویسند و از اشکال زدایی استفاده می کنند، نمی دانند که اصول و مکانیسم های کار آن چیست.


دشوار است که اشکال زدایی ...

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

البته، از آنجا که بسیاری از بسیاری از زبان های مختلف برنامه نویسی، پس از آن debuggers برای هر یک از آنها خود را. و، البته، برای دسته های مختلف از این زبان ها تفاوت در کار debuggers وجود دارد: به عنوان مثال، اشکال زدایی از برنامه ها در روبی قابل تفسیر به غیر از برای کامپایل شده توسط کد بایت کار می کند زبان جاوا، و اشکال زدایی جاوا، به نوبه خود، از Debugger Visual C ++ تفاوت خواهد داشت.

من درباره اشکالزدایی برای پلت فرم ویندوز صحبت خواهم کرد. تحقق اصول کار اشکالزدایی برای او، ممکن است با Debuggers تحت سیستم POSIX مقابله کند و با debuggers که در سطح سیستم عامل کار نمی کنند، بلکه در سطح ماشین مجازی یا هر مترجم کار می کنند .


debuggers برای ویندوز: دو نوع

دو نوع اساسا متفاوت از debuggers در ویندوز وجود دارد. من فکر می کنم، همه چیز با همه چیز مواجه شد وقتی که در دلفی برنامه ریزی شده بود (برنامه ریزی نشده بر روی آن؟ سخت است باور کنید. در مدرسه و در دوره های جوانان برنامه ریزی شده اید؟ این برنامه های سفارشی debuggers است. آنها بسیار اندکی هستند و آنها به صورت جداگانه و (به ویژه به هر حال، اغلب) به عنوان بخشی از محیط های توسعه یکپارچه کاربردی وجود دارد. در میان debuggers به \u200b\u200bعنوان محصولات نرم افزاری جداگانه توزیع شده به طور سنتی اختصاص داده شده Ollydbg، و من یک بار در مورد آن در "کامپیوتر Westi" نوشتم.

نوع دوم debuggers، debuggers اصلی سیستم عامل است. آنها ملاقات می کنند و کمتر مورد استفاده قرار می گیرند و توسط دستگاه آنها به طور قابل توجهی از کاربردهای کاربر اشکال زدایی متفاوت است. معروف ترین، و در عین حال، بهترین Debugger اصلی Softice است. شاید شما نه تنها در مورد او شنیده اید، بلکه حتی استفاده می شود.

از آنجا که کار هر یک از دو نوع debuggers دارای ویژگی های خاص خود است، پس من به شما در مورد هر یک از آنها می گویم.


برنامه های کاربر اشکال زدایی

اشکال زدایی از برنامه های سفارشی ساده تر است زیرا کار سیاه و سفید و کثیف بر روی سیستم عامل می گیرد. ویندوز دارای رابط های ویژه نرم افزاری است که برای طراحی برنامه های کاربردی کاربر طراحی شده اند - آنها API اشکال زدایی ویندوز نامیده می شوند. این API های اشکال زدایی است که توسط تمام debuggers استفاده می شود که در محیط های توسعه یکپارچه محبوب برای ویندوز جاسازی شده اند.

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

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

بنابراین، رویداد اشکال زدایی اتفاق افتاد، و پس از آن لازم است به نحوی پیدا کنید که چگونه آن را به متن برنامه مرتبط است. این ممکن است تنها اگر اطلاعات ویژه اشکال زدایی در برنامه خود فعال شود - برگه کاراکترهای اشکال زدایی. این شامل اطلاعات مربوط به انطباق بین آدرس ها و ویژگی های ویژگی ها، انواع داده ها، تعداد ردیف های کد است. به لطف آنها این است که اشکال زدایی از هر برنامه نویس ویندوز آشنا است. جداول نماد دارای فرمت های مختلف هستند، و بنابراین همیشه امکان پیدا کردن یک برنامه کامپایل شده توسط یک کامپایلر یک توسعه دهنده تنها با استفاده از یک اشکال زدایی از یک تولید کننده دیگر نیست. اما، با این حال، رایج ترین فرمت هنوز هم می تواند مشخص شود - این PDB (پایگاه داده برنامه) است، و به طور طبیعی، Microsoft Corporation طراحی شده است.

بنابراین، اگر جدول اشکالزدایی از شخصیت ها دارای فرمت PDB باشد، می توانید از یک ابزار ویژه از Microsoft Corporation استفاده کنید - یک پردازنده اشکال زدایی نمادین. هنگامی که او وارد هسته سیستم شد و imagehlp.dll نامیده شد، اما مدتها پیش در یک کتابخانه جداگانه برجسته شد. پردازنده نماد به شما اجازه می دهد تا در یک آدرس داده شده به نزدیکترین تابع باز یا یک متغیر جهانی، و همچنین تعداد رشته و نام فایل متنی منبع، که در آن این خط واقع شده است، پیدا کنید. به عنوان مثال، عملیات معکوس پشتیبانی می شود، به عنوان مثال، آدرس آدرس را با نام آن جستجو می کند.

این، البته، تمام کارهایی نیست که اشکال زدایی در برنامه های سفارشی مشغول به کار نیست. به عنوان مثال، هنگام اشکال زدایی برنامه های چند رشته، بسیاری از لحظات بسیار ظریف در ارتباط با تعامل جریان ها ظاهر می شود. حتی زمانی که اشکال زدایی چنین چیزهای نسبتا ساده، مانند خدمات، ظرافت وجود دارد.

اما در ظرافت ما در نهایت متوقف نخواهیم شد - در پایان مقاله، به شما می گویم که در مورد آنها در مورد آنها بخوانید. حالا بیایید به debuggers هسته نگاه کنیم.


اشکال زدایی هسته ای

Debuggers Core - برنامه ها بسیار پیچیده تر از debuggers از برنامه های کاربردی کاربر هستند، و من فکر می کنم، کاملا روشن است که چرا: آنها هیچ کمکی در قالب یک سیستم عامل ندارند. در این مورد، این مشتری آنهاست، زیرا او در نهایت باید اشکال زدایی کند.

اکثر debuggers هسته نیاز به دو کامپیوتر متصل به کار خود را، متصل شده توسط کابل صفر مودم. صفر مودم راهی برای اتصال دو کامپیوتر به طور مستقیم از طریق پورت های COM یا LTP خود است. کامپیوتر دوم مورد نیاز است، زیرا بخشی از اشکال زدایی نشسته در اولین (در جایی که سیستم بدهی نصب شده است)، دسترسی محدود به سخت افزار را دارد و بنابراین کل خروجی داده ها به کامپیوتر دوم صفر است.

در پردازنده های مدرن معماری اینتل X86، ثبت اختراعات ویژه ای (و در 368 سالگی قدیمی و در مدل های جدیدتر پردازنده های آنها فقط هشت نفر هستند، آنها به عنوان DR0-DR7 نامیده می شوند). این رجیسترها اجازه می دهد تا اشکالزدایی را برای بازرسی و ضبط حافظه، و همچنین در پورت های I / O تنظیم کند. به طور کلی، همه چیز به نظر می رسد، و من فکر نمی کنم که آن را به طور دقیق به نوشتن جزئیات، که هر کدام از ثبت نام های اشکالزدایی مسئول است، که قطع می شود، که قطع می شود توسط نقطه توقف اجرا می شود و اطلاعات مشابه را به وجود می آورد. بهتر است در مورد Bookbugs موجود موجود هسته برای ویندوز بگویید.

خوب، اول، این یک اشکال زدایی است که به هسته سیستم عامل ساخته شده است. این در تمام سیستم عامل سیستم عامل است که از ویندوز 2000 شروع می شود. این بخشی از فایل ntoskrnl.exe است، و شما می توانید آن را با تنظیم گزینه "/ debug" برای سیستم عامل در boot.ini فعال کنید. این اشکال زدایی نیاز به یک اتصال صفر مودم و کامپیوتر دوم با همان سیستم عامل دارد.

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

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


برای جالب ترین

در حال حاضر، البته، گفتگو در مورد اشکال زدایی برای برنامه های ویندوز به عنوان ده سال پیش مربوط نیست. کل دنیا علاقه مند به اینترنت شد و کاربران اصلی Softice به دره، کارگران خستگی ناپذیر در دزدی دریایی نوا تبدیل شدند. با این وجود، خیلی بد نیست ارتباط با Softice "OM، بدون شک، یک فرد را از لحاظ دانش در مورد کامپیوتر توسعه می دهد، البته، البته، اگر فقط با اشکال زدایی ارتباط برقرار کنید و با افراد زنده ارتباط برقرار نکنید، برخی از عوارض جانبی ممکن است. خوب، در مورد آن، فکر می کنم هر کس حدس می زند

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

بنابراین، اگر می خواهید اشکالزدایی خود را ایجاد کنید، ابتدا باید با مواد این موضوع آشنا شوید. به نظر من، بهترین کمک هزینه برای شروع، کتاب جان رابینز "اشکال زدایی برنامه های ویندوز" خواهد بود. او قبلا نسخه قدیمی، 2001 است، اما اطلاعاتی که در آن تعیین شده است مربوط و در حال حاضر، از آنجایی که آن را مشترک، حتی در برخی از روش های اساسی است. در این کتاب، نمونه هایی از نوشتن اشکال زدایی برای ویندوز وجود دارد، علاوه بر این، اگر شما برنامه ریزی در C ++ هستید، مفید خواهد بود اگر شما برنامه ریزی در C ++ هستید و می خواهید بهتر از پردازش استثنائات را بفهمید. در واقع، از این کتاب بود که من در مورد اشکال زدایی که در مقاله آمده است یاد گرفتم. اگر این کتاب را پیدا کنید، کار نخواهد کرد (پس از همه، آن را بسیار قدیمی است)، چندین آدرس وجود دارد که می توانید در دستیابی به آن وجود داشته باشد. اول این است: www.xakep.ru/post/19158/default.asp. این مقاله از مجله "هکر" جزئیات بیشتری در مورد debuggers هسته ای نسبت به من می گوید و علاوه بر این، آن شامل کد ساده ترین اشکال زدایی است. و در kalashnikoff.ru/assembler/issues/016.htm، شما می توانید نحوه نوشتن DOS Debugger یاد بگیرید. اما، البته، بهتر است MSDN را بخوانید و به طور همزمان برخی از اشکال زدایی را با متون منبع باز برای مقابله با آن پیدا کنید. خوب، البته، اگر شما به نوشتن یک اشکال زدایی آمد، سپس در این موضوع سخت موفق شوید!

زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه