دست در رفع اشکال در C و C++

Hands on Debugging in C and C++

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: GDB، Valgrind، و مهارت هایی که برای برنامه نویسی بدون خطا نیاز دارید! چگونه با استفاده از یک دیباگر مانند GDB اشکال زدایی کنیم چگونه با استفاده از valgrind نشت حافظه را شناسایی کنیم چگونه خطاها را ثبت کنیم و از یک برنامه در حال اجرا ورودی دریافت کنیم. ابزارهای دیباگ اضافی را بیاموزید (ضدعفونی کننده ها، ابزارهای ردیابی و ابزارهای تجزیه و تحلیل استاتیک)

نمای کلی

**در سال 2024 با دوبرابر محتوا، و ویدیوهای با کیفیت بالاتر بازسازی شده است!**

در این دوره آموزشی یاد خواهید گرفت که چگونه از دیباگر محبوب GDB برای یافتن خطاها در کدهای C و C++ خود استفاده کنید. یادگیری نحوه استفاده از دیباگر به شما این امکان را می دهد که در زمان یافتن خطاها صرفه جویی کنید و زمان بیشتری را صرف ساختن نرم افزار بهتر کنید. توانایی اشکال زدایی کد یک مهارت ضروری برای همه توسعه دهندگان نرم افزار است و برای انجام این کار به چیزی بیش از یک پنجره ترمینال نیاز ندارید. با این حال، درس‌های آموخته‌شده از این دوره، پشت اشکال‌زدای GDB است، و حتی چند ابزار عالی دیگر مانند valgrind را برای یافتن اشکالات در کدتان به شما نشان می‌دهد.

موضوعاتی که خواهید آموخت

دانشجویان اگر می خواهند یاد بگیرند باید این دوره را بگذرانند:

  • نحوه استفاده از دیباگر محبوب GDB

  • تکنیک‌های اشکال‌زدایی عمومی و چرایی بروز اشکالات خاص

  • برخی موضوعات پیشرفته‌تر مانند اشکال‌زدایی معکوس اسکریپت‌های نوشتن برای اشکال‌زدایی که در سایر دوره‌های ابتدایی پوشش داده نشده‌اند.

چرا باید این دوره را بگذرانید؟

یادگیری نحوه استفاده از یک اشکال زدا در ابتدا استراتژی های مرسوم اشکال زدایی "printf" را که ممکن است بتوانید از آنها دور شوید، به چالش می کشد. اما همانطور که نرم‌افزار بزرگ‌تری می‌سازید و با تیم‌های بزرگ‌تر روی نرم‌افزار کار می‌کنید، یادگیری نحوه یافتن و رفع اشکالات ضروری خواهد بود. با این دوره و کمی تمرین، می توانید با سرعت بیشتری کار کنید و در زمان رفع باگ ها صرفه جویی کنید و سپس می توانید سایر تلاش های خود را صرف ساختن نرم افزارهای عالی کنید. من می توانم چندین مورد را به یاد بیاورم که برای اولین بار به عنوان یک مهندس نرم افزار شروع به کار کردم و هفته ها طول کشید تا یک باگ را پیدا کنم و رفع کنم. اگر در آن زمان مهارت‌های رفع اشکال بهتری داشتم، می‌توانستم زمان بسیار بیشتری برای خودم (و شرکت) ذخیره کنم (و درد خودم!). بنابراین با شرکت در این دوره، پتانسیل اشکال زدایی کامل خود را باز کنید!

من کی هستم؟

بیش از 10 سال است که در دانشگاه ها و به عنوان استاد تدریس می کنم. من در صنعت در شرکت های بزرگ، استارت آپ ها و به عنوان مشاور کار کرده ام. من مشتاقانه منتظر هستم که مربی شما برای این دوره باشم و امیدوارم از درس های آموخته شده ارزش زیادی کسب کنید!


سرفصل ها و درس ها

مقدمه Introduction

  • مقدمه ای بر اشکال زدایی Introduction to Debugging

  • یک مثال کاری در GDB A Working Example in GDB

  • اهداف دوره Course Objectives

  • داستانی در مورد اولین باگ A story about the first bug

  • کد خود را با دقت بنویسید! Write your code neatly!

  • GDB برای D، Objective-C، OpenCL، Rust و غیره؟ GDB for D, Objective-C, OpenCL, Rust, etc?

  • منابع Resources

راه اندازی Setup

  • GDB (linux)، LLDB (Mac)، یا Visual Studio (Windows) GDB (linux), LLDB (Mac), or Visual Studio (Windows)

  • GDB در لینوکس (و lldb) GDB on Linux (and lldb)

  • GDB در زیر سیستم ویندوز برای لینوکس GDB on Windows Subsystem for Linux

  • LLDB در مک LLDB on Mac

استفاده از کامپایلر به عنوان دیباگر - احترام به کامپایلر Utilizing the Compiler as a Debugger - Respecting the Compiler

  • زمان کامپایل در مقابل اشکال زدایی زمان اجرا Compile-time vs Run-time debugging

  • خطاهای کامپایلر Compiler Errors

  • کامپایلرها نمی توانند ذهن ما را بخوانند Compilers cannot read our minds

  • هشدارهای کامپایلر (-Wall، -Werror و -Wconversion) را به عنوان خطا در نظر بگیرید (استفاده از C++ {} Treat Compiler Warnings (-Wall, -Werror, and -Wconversion) as Errors (Use C++ {}

  • ترفند: استفاده از کامپایلرهای متعدد Trick: Leveraging multiple compilers

  • با استفاده از کامپایلرهای ما Using our Compilers

  • نکته: کد خود را به طور منظم بنویسید Tip: Write your code neatly

اولین تکنیک اشکال زدایی شما - printf Your First Debugging Technique - printf

  • تمرین رفع اشکال (swap_buggy) A Debugging Exercise (swap_buggy)

  • اشکال زدایی printf (std::cout، console.log) printf debugging (std::cout, console.log)

  • اشکال زدایی printf (یک نگاه دیگر) با DEBUG printf debugging (one more look) with DEBUG

استفاده از دیباگر Using a Debugger

  • اشکال زدای گنو (GDB) - مبانی GNU Debugger (GDB) - The Basics

  • چرا با نمادهای اشکال زدایی (-g) کامپایل می کنیم Why We Compile with Debug Symbols (-g)

  • چاپ مقادیر و فهرست کد منبع Printing Values and Listing Source Code

  • کشف یک نوع متغیر با "Whatis" Figuring out a Variable Type with 'whatis'

  • نقاط شکست (br و اطلاعات) و ادامه (c) Breakpoints (br and info) and Continue (c)

رابط کاربری متنی GDB (TUI) GDB Text User Interface (TUI)

  • GDB رابط کاربری متنی (TUI) GDB the Text User Interface (TUI)

  • تغییر مسیر خروجی از GDB (به یک فایل یا ترمینال دیگر) Redirecting output from GDB (to another file or terminal)

  • نقاط شکست مشروط Conditional Breakpoints

  • راه‌های بیشتر برای ادامه و گذر از کد (پیشرفت و تا زمانی) More ways to continue and step through code (advance, and until)

  • Watching (watch and rwatch) متغیرها Watching (watch and rwatch) Variables

  • نقاط شکست قسمت 2 (فعال، غیرفعال و ذخیره نقطه شکست) Breakpoints Part 2 (enable, disable, and save breakpoint)

  • نمایش و عدم نمایش Display and undisplay

  • دریافت کمک در GDB (اطلاعات) Getting help in GDB (info)

مبانی فرآیندها و اشکال زدایی خطاهای رایج حافظه Foundations of Processes and Debugging Common Memory Errors

  • پشته برنامه The Program Stack

  • Call Stack چیست؟ What is a Call Stack?

  • پیمایش پشته تماس با Backtrace Navigating the Call Stack with Backtrace

  • [مفهوم] درک خطاهای رایج - خطای بخش بندی [Concept] Understanding common errors - the segmentation fault

  • [تمرین] خطای بخش بندی [Exercise] Segmentation Fault

  • [راه حل] خطای بخش بندی [Solution] Segmentation Fault

  • [مفهوم] درک خطاهای رایج - نشت حافظه [Concept] Understanding common errors - the memory leak

  • درک خطاهای رایج - سرریز پشته Understanding common errors - Stack Overflow

  • [تمرین] نشت حافظه (و ضدعفونی کننده آدرس) [Exercise] Memory Leak (And the address sanitizer)

  • [راه حل] نشت حافظه (و ضدعفونی کننده آدرس) [Solution] Memory Leak (And the address sanitizer)

تکنیک های اشکال زدایی Debugging Techniques

  • [تئوری] تکنیک رفع اشکال دلتا [Theory] Delta Debugging Technique

  • پیشگیری از اشکال - بیانیه اظهار و static_assert Bug prevention - assert statement and static_assert

  • بررسی کد با فراخوانی توابع در GDB Investigating Code by Calling functions within GDB

  • اتصال دیباگر به یک فرآیند در حال اجرا Attaching the Debugger to a Running Process

  • Core dumped -- و نحوه نگاه کردن به آن فایل ها. Core dumped -- and how to look at those files.

  • هسته تخلیه شد -- gcore برای یک فرآیند در حال اجرا Core dumped -- gcore for a running process

  • بررسی حافظه در GDB (و همچنین هگز) Examining Memory in GDB (and also hex)

دستورات، اسکریپت ها و گردش کار GDB GDB Commands, Scripts, and Workflow

  • نقاط شکست و دستورات - در زمان صرفه جویی کنید! Breakpoints and commands -- save time!

  • دستورات خود را تعریف کنید define your own commands

  • اسکریپت های gdb gdb scripts

  • دستورات شل در GDB (پوسته، ساخت و لوله) Shell commands within GDB (shell, make, and pipe)

  • فایل های منبع را در GDB ویرایش کنید Edit source files within GDB

GDB و مبانی پایتون GDB and Python Basics

  • بررسی و راه اندازی GDB با پایتون (از منبع) Check and Setup GDB with Python (from source)

  • استفاده از پایتون در GDB Using Python within GDB

تکنیک های اشکال زدایی تجربی و پیشرفته Experimental and Advanced Debugging Techniques

  • یک مقدار متغیر تنظیم کنید Set a variable value

  • اشکال زدایی معکوس Reverse Debugging

  • اشکال زدایی برنامه های چند رشته ای Debugging Multi-Threaded Programs

  • نشانک ها و نقاط بازرسی (یک عکس فوری از برنامه خود را ذخیره کنید) Bookmarks and Checkpoints (Save a snapshot of your program)

اشکال زدایی تعاملی بیشتر More Interactive Debugging

  • چرخه اشکال زدایی GDB -- اجرای مجدد و بازبینی نرم افزار GDB Debug Cycle -- Rerunning and reviewing software

سایر ابزارهای مفید اشکال زدایی Other useful Debugging Tools

  • DDD - دیباگر نمایش داده DDD - Data Display Debugger

  • strace و ltrace strace and ltrace

  • نصب و استفاده از valgrind 3.19 (تلفظ val-grinn) Installing and Using valgrind 3.19 (pronounced val-grinn)

  • استفاده از Valgrind و GDB با هم برای رفع خطای Segfault و نشت حافظه Using Valgrind and GDB together to fix a segfault and memory leak

  • cppcheck و Weffc++ cppcheck and Weffc++

با ویژگی‌های اضافی GDB به جلوتر بروید Going Further with GDB Extra Features

  • بررسی جدول مجازی برای وراثت (C++) Inspecting the Virtual Table for Inheritance (C++)

دیباگر داخلی Debugger Internals

  • سطوح اشکال زدایی دستور GDB GDB Command Debug Levels

نتیجه گیری Conclusion

  • نتیجه گیری و مراحل بعدی شما The Conclusion and Your Next Steps

زبان های دیگر Other Languages

  • DLang DLang

نمایش نظرات

دست در رفع اشکال در C و C++
جزییات دوره
5 hours
71
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
1,121
4.7 از 5
دارد
دارد
دارد
Mike Shah
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Mike Shah Mike Shah

مایک شاه، Ph.D.