GDB (همچنین به عنوان ناکارآمد پروژه GNU Project شناخته می شود) یک منبع باز و نرم افزار فرمان خطی رایگان است که به کاربران و توسعه دهندگان اجازه می دهد تا ببینند که چه چیزی در درون یک برنامه دیگر اجرا می شود یا اینکه چرا یک برنامه سقوط در یک نقطه خاص.
امکانات در یک نگاه
ویژگی های کلیدی شامل چهار تکنیک مختلف برای کمک به توسعه دهندگان گرفتن اشکالات در عمل، شروع یک برنامه و مشخص کردن هر چیزی که ممکن است بر رفتار آن تأثیر بگذارد، توقف برنامه در شرایط مشخص، بررسی سیاهههای مربوط هنگامی که برنامه سقوط کرد، به تدریج چیزها را تغییر دهید یک برنامه برای آزمایش با اصلاح اثرات یک موضوع، و ادامه با یادگیری در مورد یک اشکال دیگر. همچنین از اشکالزدایی برنامه های نوشته شده در طیف گسترده ای از زبان های برنامه نویسی از جمله C، C ++، Pascal، Ada، Objective-C و بسیاری دیگر پشتیبانی می کند.
این یک برنامه خط فرمان است
ناکارآیی پروژه GNU همیشه یک برنامه خط فرمان است. برای استفاده از آن باید یک & ldquo؛ gdb & rdquo؛ دستور در یک شبیه ساز ترمینال، و سپس & ldquo؛ کمک & rdquo؛ فرمان (بدون نقل قول) یک prompt gdb. علاوه بر این، شما همچنین می توانید از & ldquo؛ کمک به همه & rdquo؛ دستور برای مشاهده یک لیست از تمام دستورات، نوع "کمک" را دنبال کنید و نام فرمان برای مشاهده مستندات کامل، نوع "help" و یک نام کلاس برای مشاهده یک لیست از دستورات در آن کلاس، برای تایپ "apropos word" برای جستجو برای دستورات مربوط به "کلمه"
فهرست کلاس های دستورات
بعد از تایپ & ldquo؛ کمک & rdquo؛ فرمان همانطور که در بالا توضیح داده شد، شما لیستی از کلاسهای دستورات را مشاهده خواهید کرد، از جمله نام مستعار (نام مستعار دستورات دیگر)، نقاط توقف (باعث می شود که برنامه در برخی موارد متوقف شود)، داده ها (برای بررسی داده ها)، فایل ها (برای بررسی فایل ها) (برای نظارت بر پشته)، وضعیت (برای درخواست های وضعیت)، پشتیبانی (برای امکانات پشتیبانی)، tracepoints (برای ردیابی اجرای برنامه بدون توقف برنامه) و تعریف شده توسط کاربر (دستورات تعریف شده توسط کاربر).
پلت فرم های سخت افزاری و OS های پشتیبانی شده
GDB از افست طراحی شده است تا یک برنامه متقابل پلتفرم باشد که در سیستم عامل اصلی مانند مایکروسافت ویندوز و برخی از محبوب ترین انواع لینوکس / یونیکس اجرا می شود.
PR gdb / 22824 (توضیح گمراه کننده از عملکرد جدید پایتون در GDB) 8.1 فایل NEWS)
PR gdb / 22849 (ctrl-c در Extended-remote کار نمی کند)
PR gdb / 22907 ([regression] gdbserver با فایلهای دوتایی تنها نام فایل کار نمی کند)
PR gdb / 23028 (جداسازی ناسازگار از vcvtpd2dq)
PR gdb / 23053 (اصلاح -D_GLIBCXX_DEBUG رگرسیون gdb-add-index)
PR gdb / 23127 ([AArch64] GDB را نمی توان برای نرم افزار اشکال زدایی استفاده کرد که از آدرس های مجازی بالا استفاده می کند)
PR server / 23158 (gdbserver دیگر در ویندوز کار نمی کند)
نقطه توقف PR / 23210 ([8.1 / 8.2 Regression] آدرس Breakup نقطه ضعف از 0xf7fe7dd3 به 0xfffffffff7fe7dd3 تنظیم شده است)
چه جدید در نسخه 8.1 است:
نقاط نقطهای در عملکردهای C ++ در حال حاضر بر روی تمام زمینهها به طور پیشفرض (& quot؛ وحشی & quot؛ تطبیق) تنظیم شده است.
پشتیبانی از قرار دادن نقاط توقف در توابع با برچسب های C ++ ABI؛
شبیه سازی حسابی حساب شناختی هدف در طول ارزیابی بیان (نیاز به MPFR 3.1 یا بالاتر)؛
پایتون پیشرفت های مختلف اسکریپت؛
بهبود پشتیبانی زنگ؛ به طور خاص، اشیاء صفر در حال حاضر می تواند بازرسی در هنگام اشکال زدایی کد زنگ؛
GDB دیگر در مورد نوع نمادها بدون اطلاعات اشکالزدایی پیش بینی نمی کند تا از نتایج اشتباه و اغلب گیج کننده تولید شود.
دستورات "فعال" و "غیرفعال" در حال حاضر تعدادی از مکان های نقطه پایانی را قبول می کنند؛
دستور 'start' جدید برای شروع برنامه در اولین تمرین؛
فرمان جدید 'rbreak' برای وارد کردن تعدادی از نقطه های شکست از طریق الگوی بیان منظم (نیاز به پایتون)؛
دستور ptype اکنون از چاپ افست و اندازه فیلدها در ساختار پشتیبانی می کند؛
فرمان 'gcore' در حال حاضر پشتیبانی از همه نقشه های حافظه (گزینه '-a' خط فرمان) را از بین می برد.
کلید های میانبر جدید برای حالت تک کلید TUI: 'i' برای stepi و 'o' برای nexti؛
پیشرفت های GDB سرور:
پشتیبانی از انتقال متغیرهای محیطی به GDBserver؛
پشتیبانی برای شروع فرآیندهای پایین تر با یک دایرکتوری کار اولیه مشخص شده؛
در سیستم های یونیکس، پشتیبانی از گسترش و جایگزینی استدلالات خط فرمان پایین تر؛
پیشرفت های مختلف تکمیل؛
فرمان مورد استفاده برای کامپایل و تزریق کد با دستور 'کامپایل' در حال حاضر قابل تنظیم است؛
گزینه 'فرمان خط جدید' --readnever برای سرعت بخشیدن به راه اندازی GDB زمانی که اطلاعات اشکالزدنی مورد نیاز نیست؛
پشتیبانی از تنظیمات بومی جدید زیر:
FreeBSD / aarch64 (aarch64 * - * - freebsd *)؛
FreeBSD / arm (arm * - * - freebsd *)؛
پشتیبانی از اهداف جدید زیر:
FreeBSD / aarch64 (aarch64 * - * - freebsd *)؛
FreeBSD / arm (arm * - * - freebsd *)؛
OpenRISC ELF (or1k * - * - elf)
پشتیبانی از اهداف زیر و تنظیمات بومی حذف شده است:
Solaris2 / x86 (I 86 - * - solaris2 [0-9])؛
Solaris2 / sparc (sparc * - * - solaris2 [0-9])؛
چه جدید در این نسخه است:
ساختن این نسخه از GDB اکنون نیاز به ابزارهای زیر است:
یک کامپایلر C ++ 11 (به عنوان مثال، GCC 4.8 یا بالاتر)؛
گنو نسخه 3.81 یا بالاتر را اجرا کنید
تغییرات در این نسخه عبارتند از:
C ++: پشتیبانی از منابع مرجع
پیشرفت های اسکریپت پایتون:
توابع جدید برای شروع، توقف و دسترسی به ضبط در حال اجرا در حال اجرا.
پشتیبانی از مرجع Rvalue در gdb.Type.
دستورالعمل GDB مترجم:
دستورالعمل های کاربر اکنون تعداد نامحدودی از استدلال را می پذیرند.
& quot؛ eval & quot؛ دستور اکنون استدلال های تعریف شده توسط کاربر را گسترش می دهد.
نسخه DWARF نسخه 5 پشتیبانی می کند
(توجه داشته باشید که فهرست .debug_names آن هنوز پشتیبانی نشده است).
پیشرفت های GDB / MI:
فرمان کتابخانه های جدید-فایل-لیست-اشتراک گذاری برای فهرست کردن کتابخانه های اشتراکی در برنامه.
دستور -target-flash-delete برای حذف حافظه فلش جدید.
پشتیبانی از FreeBSD / MIPS مادری (mips * - * - freebsd)
پشتیبانی از اهداف زیر:
Synopsys ARC (arc * - * - elf32)
FreeBSD / MIPS (mips * - * - freebsd)
پیشرفتهای متفاوتی
تغییر مسیر خط فرمان در حال حاضر در میزبان های MS-Windows پشتیبانی می شود.
پشتیبانی از نام های موضوع در MS-Windows.
پشتیبانی از ثبت نام PKU در گنو / لینوکس.
پشتیبانی از توصیف هدف sparc32 و sparc64.
دستور GDB / CLI جدید برای پاک کردن حافظه فلش
دستورالعمل و دستورالعمل ضبط / پخش پشتیبانی.
پشتیبانی از ویژگی های زیر حذف شده است:
پشتیبانی از برنامه های جاوا که با gcj کامپایل شده اند
پشتیبانی از تنظیمات زیر:
FreeBSD / alpha (alpha * - * - freebsd *)
GNU / kFreeBSD / alpha (alpha * - * - kfreebsd * -gnu)
چه جدید در نسخه 7.9.1 است:
PR build / 18033 (نظر سبک C ++ در gdb / iq2000-tdep.c و gdb / compile / compile - * .c )
PR build / 18298 (دستور quilti & quot؛ کامپایل & quot؛ نمیتواند کامپایلر را پیدا کند اگر ابزارها به جای چهار برابر تکرار شود)
PR tui / 18311 (SEGV تصادفی هنگام نمایش ثبت در حالت TUI)
PR python / 18299 (به استثنای ثبت نام یک چاپگر جهانی در حالت کلاسیک)
PR python / 18066 (argument & quot؛ word & quot؛ به نظر می رسد در Command.complete (متن، کلمه) شکسته)
PR Pascal / 17815 (اصلاح رفتار پاسکال برای زمینه های کلاس با تست)
PR پایتون / 18285 (نوع expr با استفاده از xmethod باعث SEGV)
چه جدید در نسخه 7.9 است:
پیشرفت های اسکریپت پایتون.
جمع آوری کد منبع و تزریق به پایین تر.
دستورات جدید، گزینه ها، متغیرهای راحتی / گزینه ها.
پشتیبانی از MIPS SDE (mips * -sde * -elf *).
دست زدن بهتر سیگنال ها هنگام اشکالزدایی برنامه های رشته ای.
چه جدید در نسخه 7.8.2 است است:
PR symtab / 17642 (رفع 7.8) خطای داخلی: resolve_dynamic_struct: تضاد TYPE_NFIELDS (نوع) & gt؛ 0 شکست خورده است. )
PR binutils / 17677 (_bfd_elf_get_synthetic_symtab در پیچیدگی O (n ^ 2) اجرا می شود)
PR gdb / 16215 (SPARC: نمی توان CFA را برای این قاب محاسبه کرد)
PR gdb / 17525 (target-async: دستورات breakpoint هنگام اجرای برنامه از اسکریپت -x اجرا نمی شود)
PR cli / 17828 ([7.8 regression] -batch -ex r terminal terminals)
در نسخه 7.8.1 جدید است:
PR python / 17364 (نیاز به نام چاپگر بهتر در border_registers.py)
PR build / 17104 (CFLAGS = & quot؛ -Wall -Wextra & quot؛ gdb / confgure --with-babeltrace fails)
PR gdb / 17345 (babeltrace (1.1.2 و بعد از آن) در مورد داده های ctf تولید شده توسط GDB شکایت می کند)
PR build / 17298 (gcore: نمی توان ثبت کرد: چنین پروسه ای وجود ندارد)
PR python / 17342 (Xmethod Python سازگار نیست پایتون 3)
PR python / 17355 (سقوط در فیلترهای قاب پایتون با آرگومان قابل خواندن)
PR guile / 17367 (محاسبه مسیر اداری اشتباه است زمانی که اسکریپت pkg-config ارائه شده به عنوان arg به -with-guile)
PR gdb / 17247 (gdb در برنامه ی چند رشته یخ می زند)
PR gdb / 17347 (رگرسيون: GDB در فرآيند پيوست متوقف شد)
PR gdb / 17407 (رگرسیون برای خواندن vDSO لینوکس)
PR سرور / 17457 (aarch64 / gdbserver: صفحه نمایش ثبت نام نادرست شناور)
PR server / 17487 (state- & gt؛ dr_control_mirror == 0 در gdbserver در ویندوز ثابت نشده است)
PR gdb / 17472 (با حاشیه نویسی، ورودی در هنگام اجرای در crash های پیشین readline / gdb)
PR gdb / 17471 (تکرار یک فرمان پس زمینه آن را پیش زمینه می کند)
PR cli / 17300 (سقوط در حالت بدون توقف با ادامه -a & (readline_callback_read_char () با هیچ دستیار تماس گرفت!))
پایتون PR / 17372 (پایتون هنگام نمایش کمک () پنهان می شود
PR python / 17408 (../../gdb/infrun.c:5256: خطای داخلی: switch_back_to_stepped_thread: Assertion `schedlock_applies (1) 'شکست خورده است.)
چه جدید در نسخه 7.8 است:
پشتیبانی از اسکریپت Guile.
پیشرفت های اسکریپت پایتون.
دستورات جدید، گزینه ها، متغیرهای راحتی / گزینه ها.
پروتکل راه دور و پیشرفت های GDBserver.
تنظیمات جدید هدف (کمپانی PowerPC64 GNU / Linux).
پیشرفت های بزرگ
پشتیبانی از آرایه های خودکار ISO C99 متغیر طول.
& quot؛ مقایسه مقاطع & quot؛ دستور در حال حاضر بر روی تمام اهداف کار می کند.
& quot؛ هدف بومی & quot؛ فرمان در حال حاضر به هدف بومی متصل می شود.
چه جدید در نسخه 7.7 است:
پیشرفته پشتیبانی از اسکریپت پایتون.
برخی از پیشرفت های C ++.
دستورات جدید، گزینه ها، متغیرهای راحتی / گزینه ها.
چند فرمان GDB / MI جدید و پیشرفت.
پروتکل راه دور و پیشرفت های GDBserver.
تنظیمات هدف جدید (Nios II، TI MSP430).
پشتیبانی از داده های GDB ویندوز x64.
پشتیبانی از SystemTap SDT در AArch64 GNU / Linux پشتیبانی می کند.
CTF (فرمت ردیابی مشترک) پشتیبانی می کند.
اسکریپت های جدید gcore و gdb-add-index.sh.
بهبود بازوی * -linux ضبط / پخش پشتیبانی.
پشتیبانی از تنظیمات منسوخ NetBSD و OpenBSD حذف شده است. انواع ELF از این تنظیمات پشتیبانی می شوند.
& quot؛ set | show remotebaud & quot؛ دستورالعمل ها به نفع & quot؛ show | show serial baud & quot؛ خاتمه می یابد.
چه جدید در نسخه 7.6.2 است:
PR breakpoint / 16251 (خطای نقطه شکست سخت افزاری AArch64 پس از چنگال)
PR gdb / 16303 (GDB 7.6.1 با Binutils 2.24 در MIPS16 و microMIPS کار نمی کند)
چه جدید در نسخه 7.6.1 است:
PR tdep / 15420 (برنامه های رشته ای را نمی توان بر روی نسخه های جدیدتر x86-solaris - Solaris 10، Update 10 یا بالاتر)
PR remote / 15455 (QTro بسته های راه دور شکسته)
PR build / 15476 (ساخت شکست با توجه به نوع enum ناقص در utils.h)
PR server / 15594 (پشتیبانی tls در 64x32 x86 gdbserver نشانی 64 بیتی را گسترش نمی دهد)
PR server / 15075 (dprintf با & quot؛ بعدی & quot؛)
PR server / 15434 (dprintf با استفاده از synchronous "continue" حتی در حالت بدون توقف)
PR tui / 14880 (در طرح بندی های ثبت شده تقسیم شده، در نتیجه نتیجه شکست در ارزش در value.c)
PR c ++ / 15519 (GDB 7.6 94 برابر کندتر از GDB 7.5.1 با استفاده از یک فایل هسته خاص است)
PR gdb / 15837 (GDB مقادیر ورودی برای متغیرهای محلی را چاپ می کند)
PR gdb / 15415 (gdb لینک های نمادین را هنگام عبور از argv حل می کند [0])
PR cli / 15603 (CTRL-C دیگر نمیتواند نفوذ را متوقف کند)
PR gdb / 15604 (رگرسيون نشت 7.5 پلاگین gdbserver)
چه جدید در نسخه 7.5 است:
پشتیبانی از زبان
اهداف جدید (x32 ABI، microMIPS، Renesas RL78، HP OpenVMS ia64).
بیشتر پیکربندی های پیشرفته
پروتکل های SDT (Static Defined Tracing) با پروب های SystemTap پشتیبانی می شوند.
بهبود GDBserver (اتصالات stdio، ارزیابی نقطه هدف از شرایط نقطه توقف، بهبود پروتکل های راه دور).
سایر پیشرفت های دیگر (توانایی توقف زمانی که یک کتابخانه به اشتراک گذاشته شده یا بارگیری شده است، چاپ پویا و غیره).
اشکال زدایی معکوس در ARM
باینری & quot؛ gdbtui & quot؛ رها شده است و دیگر نمی تواند ساخته شود. استفاده از & quot؛ gdb -tui & quot؛ بجای.
چه جدید در نسخه 7.4 است:
خطوط متقارن در حال حاضر به طور مداوم در حال انجام است.
در حالیکه با & quot؛ عملکرد جست و خیز & quot؛ و & quot؛ فایل ردیف & quot؛ دستورات
دستورالعمل هایی برای تنظیم و به دست آوردن حداکثر حد مجاز ساعت سخت افزاری سخت افزار از راه دور افزوده شد.
اسکریپت پایتون بسیار پیشرفته بود.
بسیاری از پیشرفت های دیگر، رفع اشکالات و تغییرات کلی ساخته شده است.
چه جدید در نسخه 7.1 است:
پشتیبانی از اهداف جدید (شامل یک شبیه ساز):
Xilinx MicroBlaze
Renesas RX
ویژگی های اصلی جدید عبارتند از:
اشکال زدایی چند برنامه، اجازه می دهد اشکال زدایی برای کنترل بیش از
یک برنامه در همان جلسه GDB.
اشکال زدایی مستقل اجرای (PIE).
همچنین دارای بسیاری از پیشرفت ها و رفع اشکال، از جمله:
پشتیبانی از پایتون گسترش یافته است.
بهبود پشتیبانی C ++ (فضای نام، اپراتورهای ردگیری، رفع اشکال)
بهبود پشتیبانی Tracepoint.
فرایند بهبود رکورد (صرفه جویی / بازگرداندن ورود به سیستم، سخت افزار
پشتیبانی Watchpoint)
پیشرفت های پروتکل از راه دور (اشکالزدایی کرنل لینوکس، بسته های جدید
برای حمایت از tracepoint)
نظر یافت نشد