آموزش GDB

دسته بندی: نرم افزار ها

آموزش GDB

آنچه در این صفحه می خوانید:

معرفی GNU Debugger (GDB)

Debugger GNU (GDB) یک دیباگر قابل حمل است که در بسیاری از سیستم های شبیه به یونیکس اجرا می شود و برای بسیاری از زبان های برنامه نویسی از جمله Ada، سی و سی پلاس پلاس، Objective-C، Free Pascal، Fortran، گو (GO) و برخی دیگر کار می کند.

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

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

تاریخچه GNU Debugger (GDB)

GDB اولین بار توسط ریچارد استالمن در سال 1986 به عنوان بخشی از سیستم GNU پس از GNU Emacs "منطقی پایدار" نوشته شد. GDB نرم افزاری رایگان است که تحت مجوز عمومی GNU منتشر می شود. این پس از debugger DBX، که با توزیع های برکلی یونیکس همراه بود، مدل شد. از سال 1990 تا 1993 توسط جان گیلمور نگهداری می شد. اکنون توسط کمیته مدیریت GDB که توسط بنیاد نرم افزار آزاد منصوب شده است، حفظ می شود.

بررسی فنی GNU Debugger (GDB)

امکانات

GDB امکانات گسترده ای برای ردیابی و تغییر در اجرای برنامه های رایانه ای ارائه می دهد. کاربر می تواند مقادیر متغیرهای داخلی برنامه ها را کنترل و اصلاح کند، و حتی توابع مستقل از رفتار عادی برنامه را فراخوانی کند. پردازنده های هدف GDB (از سال 2003) شامل Alpha، ARM، AVR، H8 / 300، Altera Nios / Nios II، System / 370، System 390، X86 و پسوند 64 بیتی X86-64، IA-64 "Itanium"، موتورولا 68000، MIPS، PA-RISC، PowerPC، SuperH، SPARC و VAX می باشند.

پردازنده های هدف کمتر شناخته شده پشتیبانی شده در نسخه استاندارد شامل A29K، ARC، ETRAX CRIS، D10V، D30V، FR-30، FR-V، Intel i960، 68HC11، Motorola 88000، MCORE، MN10200، MN10300، NS32K، Stormy16 و Z8000 (نسخه های جدیدتر به احتمال زیاد از برخی از این موارد پشتیبانی نمی کنند) می باشند. GDB شبیه سازهای داخلی را برای پردازنده های هدف حتی کمتر شناخته شده مانند M32R یا V850 وارد کرده است.

GDB هنوز هم فعالانه توسعه می یابد. از نسخه 7.0 ویژگی های جدید شامل پشتیبانی از اسکریپت پایتون و نسخه 7.8 اسکریپت GNU Guile نیز هست. از آنجا که نسخه 7.0، پشتیبانی از "دیباگینگ برگشت پذیر" اجازه می دهد یک جلسه اشکال زدایی به عقب برگردد، دقیقاً مانند برگرداندن یک برنامه خراب برای دیدن آنچه اتفاق افتاده است، در دسترس است.

اشکال زدایی از راه دور

GDB حالت "remote" را ارائه می دهد که اغلب هنگام اشکال زدایی در سیستم های جاسازی شده استفاده می شود. کار از راه دور وقتی GDB روی یک دستگاه اجرا می شود و برنامه اشکال زدایی روی دیگری اجرا می شود. GDB می تواند با "stub" از راه دور که پروتکل GDB را از طریق دستگاه سریال یا TCP / IP درک می کند، ارتباط برقرار کند. یک برنامه stub را می توان با پیوند دادن به فایل های stub مناسب با GDB، که سمت هدف پروتکل ارتباطی را پیاده سازی می کنند، ایجاد کرد. از طرف دیگر، از gdbserver می توان برای رفع اشکال از راه دور برنامه بدون نیاز به تغییر آن به هر طریقی استفاده کرد.

همین حالت توسط KGDB برای اشکال زدایی هسته در حال اجرا لینوکس در سطح منبع با gdb نیز استفاده شده است. با KGDB، توسعه دهندگان هسته می توانند هسته را به همان روشی که در برنامه های کاربردی دیباگینگ می شوند، اشکال زدایی کنند. این امکان را برای قرار دادن نقاط شکست در کد هسته فراهم می کند، از طریق کد عبور کرده و متغیرها را مشاهده می کنید. در معماری هایی که رجیستری های اشکال زدایی سخت افزاری در دسترس هستند، می توان breakpoints را تنظیم کرد که هنگام اجرای یا دسترسی به آدرس های حافظه مشخص، نقاط شکست را ایجاد می کنند. KGDB به یک دستگاه اضافی نیاز دارد که با استفاده از کابل سریال یا اترنت به سیستم وصل شود. در FreeBSD، اشکال زدایی با استفاده از دسترسی مستقیم حافظه Firewire (DMA) نیز امکان پذیر است.

رابط کاربر گرافیکی

این اشکال زدایی رابط کاربری گرافیکی مخصوص به خود را ندارد و به صورت پیش فرض در رابط خط فرمان قرار دارد. چندین فرانت اند برای آن ساخته شده است، مانند UltraGDB، Xxgdb، Debugger Display Display Data (DDD)، Nemiver، KDbg، Debugger Xcode، GDBtk / Insight و HP Wildebeest Debugger GUI (WDB GUI). IDE هایی مانند Codelite، Code :: Blocks، Dev-C ++، Geany، GNAT Studio Programming (GPS)، KDevel، Qt Creator، Lazarus، MonoDevel، Eclipse، NetBeans و Visual Studio می توانند با GDB رابط کنند.

GNU Emacs دارای "حالت GUD" است و ابزارهایی برای VIM وجود دارد (به عنوان مثال clewn). این امکانات امکاناتی مانند اشکال زدایی را که در IDE یافت می شود، ارائه می دهند. برخی از ابزارهای اشکال زدایی دیگر برای کار با GDB مانند ردیاب های نشت حافظه طراحی شده اند.

آیا این نوشته را دوست داشتید؟