GDB (הידוע גם כמאתר הבאגים של פרוייקט GNU) הוא קוד פתוח ותוכנה חופשית של שורת פקודה המאפשרת למשתמשים ולמפתחים כאחד לראות מה קורה בתוכניות אחרות, בעוד שהיא להורג, או מדוע יישום מתרסק בנקודה מסוימת.
תכונות במבט אחד
התכונות העיקריות כוללות ארבע טכניקות שונות המסייעות למפתחים לתפוס באגים בפעולה, להפעיל יישום ולציין כל דבר שעשוי להשפיע על התנהגותו, לבצע עצירת תוכנית בתנאים מסוימים, לבחון את היומנים כאשר היישום התרסק, לשנות בהדרגה את הדברים תוכנית על מנת להתנסות עם תיקון ההשפעות של נושא אחד, ולהמשיך על ידי למידה על באג נוסף. הוא תומך גם באגים של תוכניות שנכתבו במגוון רחב של שפות תכנות, כולל C, C + +, פסקל , עדה, Objective-C, ועוד רבים אחרים.
הוא יישום שורת פקודה
מאתר הבאגים של פרוייקט GNU הוא תמיד יישום שורת פקודה. כדי להשתמש בו, עליך להפעיל את & ldquo; gdb & rdquo; הפקודה אמולטור מסוף, ולאחר מכן לבצע את העזרה & ldquo; עזרה & rdquo; הפקודה (ללא מרכאות) הפקודה gdb. בנוסף, ניתן גם להקליד את & ldquo; לעזור לכל & rdquo; כדי להציג רשימה של כל הפקודות, הקלד "עזרה" ואחריו שם הפקודה כדי להציג את התיעוד המלא, הקלד "עזרה" ואחריו שם מחלקה כדי להציג רשימה של פקודות בכיתה זו, להקליד "אפרופוס מילה" כדי לחפש עבור פקודות הקשורות "מילה."
רשימת מחלקות פקודות
לאחר הקלדת העזרה & ldquo; & rdquo; כפי שתואר לעיל, תראה רשימה של סוגי פקודות, כולל כינויים (מציג כינויים של פקודות אחרות), breakpoints (עושה את התוכנית לעצור בנקודות מסוימות), נתונים (לבדיקת נתונים), קבצים (לבדיקת קבצים) (מעקב אחר הערימה), מצב (עבור פניות סטטוס), תמיכה (עבור מתקני תמיכה), נקודות מעקב (למעקב אחר ביצוע התוכנית ללא צורך בביצוע תוכנית) עצירת התוכנית) והגדרת משתמש (פקודות המוגדרות על ידי המשתמש).
פלטפורמות חומרה נתמכות ומערכות הפעלה
GDB תוכנן מהקיזוז כדי להיות יישום בין פלטפורמות, הפועל במערכות הפעלה רגילות כגון Microsoft Windows וחלק מהגרסאות המקובלות ביותר של Linux / UNIX. הוא נתמך הן בפלטפורמות חומרה של 32 סיביות והן ב- 64 סיביות.
מה חדש במהדורה זו:
- יחסי ציבור gdb / 22824 (תיאור מטעה של פונקציית Python חדשה של rbreak בקובץ GDB 8.1 NEWS)
- PR gdb / 22849 (ctrl-c אינו פועל ב- Extended-remote)
- PR gdb / 22907 (gdbserver [regression] אינו פועל עם קבצים בינאריים בלבד)
- PR gdb / 23028 (פריסה לא עקבית של vcvtpd2dq)
- PR gdb / 23053 (תקן-^ GLIBCXX_DEBUG gdb-add-regression index)
- gdb / 23127 ([AArch64] GDB לא ניתן להשתמש באיתור באגים בתוכנה המשתמשת בכתובת וירטואלית גבוהה)
- שרת יחסי ציבור / 23158 (gdbserver כבר לא פונקציונלי ב- Windows)
- נקודות עצירה PR / 23210 ([8.1 / 8.2 רגרסיה] כתובת עצירה בוגוס מותאמת מ- 0xf7fe7dd3 ל- 0xfffffffff7fe7dd3)
מה חדש בגרסה 8.1:
- נקודות עצירה בפונקציות C + + מוגדרות כעת על כל טווחי ברירת המחדל (התאמה & quot; בר & quot;);
- תמיכה בהוספת נקודות עצירה בפונקציות המסומנות בתגי C + + ABI;
- מיקוד אמולציה אריתמטית של נקודה צפה במהלך הערכת הביטוי (דורש MPFR 3.1 ואילך);
- שיפורי Python Scripting שונים
- תמיכה משופרת בחלודה; בפרט, אובייקטים Trait ניתן כעת לבדוק כאשר באגים קוד חלודה,
- GDB כבר אינו מניח הנחות לגבי סוג הסמלים ללא איתור באגים של מידע, כדי למנוע הפקת תוצאות שגויות ולעתים קרובות מבלבלות;
- הפקודות 'הפעל' ו- 'disable' מקבלות כעת טווח של מיקומי עצירה
- הפקודה 'starti' חדשה להתחיל את התוכנית בהוראה הראשונה;
- הפקודה 'rbreak' חדשה כדי להוסיף מספר נקודות עצירה באמצעות דפוס ביטוי רגיל (דורש Python);
- הפקודה 'ptype' תומכת כעת בהדפסה של הקיזוז והגודל של השדות במבנה,
- הפקודה 'gcore' תומכת כעת בהשליך את כל מיפויי הזיכרון (אפשרות 'שורת הפקודה');
- קיצורי דרך חדשים עבור מצב TUI Single-Key: 'i' עבור stepi ו- 'o' עבור nexti;
- שיפורים ב- GDBserver:
- תמיכה בהעברת משתני סביבה ל- GDBserver;
- תמיכה בהתחלת תהליכים נחותים עם ספריית עבודה ראשונית שצוין,
- במערכות Unix, תמיכה בהרחבה מרחיבה ובהחלפה משתנה של טיעונים נחותים בשורת הפקודה;
- שיפורים בהשלמה שונים;
- הפקודה המשמשת להידור והזרקת קוד באמצעות הפקודה 'compile' ניתנת להגדרה כעת;
- אפשרות שורת פקודה חדשה '- notnever' כדי להאיץ את ההפעלה של GDB כאשר אין צורך במידע באגים;
- תמיכה בתצורות המקור החדשות הבאות:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / זרוע (זרוע * - * - freebsd *);
- תמיכה עבור היעדים החדשים הבאים:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / זרוע (זרוע * - * - freebsd *);
- OpenRISC ELF (או 1k * - * - elf)
- הוסר תמיכה עבור היעדים הבאים ותצורות מקוריות:
- Solaris2 / x86 (i? 86 - * - Solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - Solaris2. [0-9]);
מה חדש בגרסה:
- בניית גירסה זו של GDB דורשת כעת את הכלים הבאים:
- מהדר C + + - 11 (לדוגמה, GCC 4.8 ואילך);
- גנו מייצרת גרסה 3.81 ואילך.
- השינויים במהדורה זו כוללים:
- C + +: תמיכה בפניות rvalue
- שיפורים בתסריט של Python:
- פונקציות חדשות להפעלה, עצירה וגישה לרשומת btrace פועל.
- תמיכה ב- Rvalue בהתייחסות ב- gdb.Type.
- מתורגמן של פקודות GDB:
- פקודות משתמש מקבלות כעת מספר בלתי מוגבל של ארגומנטים.
- ההערכה & quot;; quot & quot; הפקודה כעת מרחיבה את הארגומנטים המוגדרים על ידי המשתמש.
- תמיכה ב- DWARF גרסה 5
- (שים לב שעדיין לא נתמך אינדקס .debug_names).
- שיפורים ב- GDB / MI:
- הפקודה new -file-list-shared-library תציג רשימה של הספריות המשותפות בתוכנית.
- הפקודה 'חדש' - 'מחק-פלאש', כדי למחוק זיכרון פלאש.
- תמיכה ב- FreeBSD / mips (mips * - * - freebsd)
- תמיכה עבור היעדים הבאים:
- סינופסיס ARC (arc * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- שיפורים נוספים:
- ניתוב מחדש של שורת הפקודה נתמך כעת במארחים של Windows.
- תמיכה בשמות פתילים ב- MS-Windows.
- תמיכה ברשומת PKU ב- GNU / Linux.
- תמיכה בתיאורי יעד ב- sparc32 וב- sparc64.
- פקודת GDB / CLI חדשה למחיקת זיכרון הבזק
- rdrand ו- rdseed הוראות הקלטה / שידור חוזר.
- התמיכה בתכונות הבאות הוסרה:
- תמיכה בתוכניות Java המורכבות ב- gcj
- תמיכה בתצורות הבאות:
- FreeBSD / אלפא (אלפא * - * - freebsd *)
- גנו / kFreeBSD / אלפא (אלפא * - * - kfreebsd * -gnu)
- PR build / 18033 gdb / iq2000-tdep.c ו- gdb / compile / compile - * c)
- בניית יחסי ציבור / 18298 (הפקודה & quot; & quot; & quot;) לא יכולה למצוא מהדר אם כלים מוגדרים עם משולשת במקום ארבע פעמים)
- PR tui / 18311 (SEGV אקראי בעת הצגת רישומים במצב TUI)
- python PR / 18299 (יוצא מן הכלל בעת רישום מדפסת יפה בעולם במצב verbose)
- python / 18066 (ארגומנט & quot; word & quot; נראה שבור ב- Command.complete (טקסט, מילה))
- pascal PR / 17815 (תקן התנהגות פסקל עבור שדות הכיתה עם testcase)
- python PR / 18285 (ptype expr-with-xmethod גורם ל- SEGV)
- שיפורים בתסריט Python.
- אוסף קוד מקור והזרקת לתוך נחות.
- פקודות חדשות, אפשרויות, משתני נוחות / אפשרויות.
- תמיכה ב- MIPS SDE (mips * -sde * - *).
- טיפול טוב יותר באותות בעת איתור באגים בתוכניות משורשרות.
- יחסי ציבור / 17642 ([7.8 רגרסיה] פנימי -error: disc_dynamic_struct: Assertion `TYPE_NFIELDS (type) & gt; 0 'נכשל.)
- יחסי ציבור PR / 17677 (_bfd_elf_get_synthetic_symtab פועל במורכבות O (n ^ 2))
- PR gdb / 16215 (SPARC: לא ניתן לחשב CFA עבור מסגרת זו)
- PR gdb / 17525 (target-async: פקודות נקודת עצירה לא מבוצעות בעת הפעלת התוכנית מ- script script)
- PR cli / 17828 ([7.8 regression] -batch rx טרמינל)
- PR build / 17104 (CFLAGS = & quot; -Wall -Wextra & quot; gdb / confgure - with-babeltrace נכשל)
- PR gdb / 17345 (Babeltrace (1.1.2 ואילך) מתלונן על נתוני ה- ctf שנוצרו על ידי GDB)
- בניית יחסי ציבור / 17298 (gcore: לא ניתן לקבל רשומות: תהליך כזה)
- python PR / 17342 (Python Xmethod אינו תואם ל- Python 3)
- python PR / 17355 (התרסקות במסנני מסגרת Python עם ארגון לא קריא)
- ערמת PR / 17367 (חישוב של נתיב גילדה שגוי כאשר התסריט pkg-config סופק כארגומנט - עם גייה)
- PR gdb / 17247 (gdb קופא על אפליקציה מרובת הליכי משנה)
- PR gdb / 17347 (רגרסיה: GDB הפסיק לפעול עם התהליך המצורף)
- PR gdb / 17407 (רגרסיה לקריאת לינוקס vDSO)
- שרת יחסי ציבור / 17457 (aarch64 / gdbserver: רושם שגוי של נקודה צפה)
- שרת יחסי ציבור / 17487 (מצב & gt; dr_control_mirror == 0 נכשל בטענה ב- gdbserver ב- Windows)
- PR gdb / 17472 (עם הערות, קלט בעת ביצוע בתרשימים הקדמיים readline / gdb)
- PR gdb / 17471 (חזרה על פקודת רקע הופכת אותו לקידמה)
- PR cli / 17300 (התרסקות במצב ללא הפסקה עם המשך - a & (readline_callback_read_char () נקרא ללא מטפל!))
- python PR / 17372 (python תלוי בעת הצגת עזרה ())
- python PR / 17408 (../../gdb/infrun.c:5256: internal-error: switch_back_to_stepped_thread: טענה '!' תזכורת (1) נכשלה.)
- תמיכה בתסריטים של Guile.
- שיפורי Scripting של Python.
- פקודות חדשות, אפשרויות, משתני נוחות / אפשרויות.
- שיפורי פרוטוקול מרוחק ו- GDBserver.
- תצורות יעד חדשות (PowerPC64 GNU / Linux-endian).
- שיפורים ב- btrace.
- ISO C99 משתנה אורך מערכים אוטומטיים תמיכה.
- & quot; השווה-מקטעים & quot; הפקודה פועלת כעת על כל היעדים.
- & quot; מיקוד היעד & quot; הפקודה מתחברת כעת ליעד המקורי.
- תמיכה משופרת ב- Scripting של Python.
- שיפורים ב- C ++.
- פקודות חדשות, אפשרויות, משתני נוחות / אפשרויות.
- מספר פקודות ושיפורים חדשים של GDB / MI.
- שיפורי פרוטוקול מרוחק ו- GDBserver.
- תצורות יעד חדשות (Nios II, TI MSP430).
- תמיכה ב- GDB Windows x64 של הסרת נתונים.
- בדיקות SystemTap SDT תומכות ב- AArch64 GNU / Linux.
- CTF (פורמט מעקב משותף).
- סקריפטים חדשים gcore ו- gdb-add-index.sh.
- זרוע משופרת * -Lux הרשומה / שידור חוזר.
- התמיכה הוסרה עבור תצורות מיושנות של NetBSD ו- OpenBSD. גירסאות ELF של תצורות אלה נשמרות.
- התצוגה & quot; set | show remote & quot; הפקודות הוצאו משימוש לטובת & quot; show | הצג הצגה סדרתי & quot ;.
- נקודת עצירה של PR / 16251 (שגיאת מעבר לחומרה של AArch64 לאחר מזלג)
- PR gdb / 16303 (GDB 7.6.1 אינו פועל עם binutils 2.24 ב- MIPS16 ו- microMIPS)
- מרוחק / 15455 (מנות מרחוק של QTro שבור)
- בניית יחסי ציבור / 15476 (כשל בבנייה בשל סוג אום חלקי ב- utils.h)
- שרת יחסי ציבור / 15594 (תמיכה TLS ב- gdbserver 64x32 x86 אינו מרחיב כתובת ל- 64 סיביות)
- שרת יחסי ציבור / 15075 (dprintf inteferes עם & quot; הבא & quot;)
- שרת יחסי ציבור / 15434 (dprintf משתמש בסינכרון 'המשך' גם במצב ללא הפסקה)
- PR tui / 14880 (בפריסות של רישום מפוצל, תוצאות בתוצאות כשל בכישלון value.c)
- PR c + / 15519 (GDB 7.6 הוא 94x איטי יותר מ- GDB 7.5.1 באמצעות קובץ ליבה מסוים)
- PR gdb / 15837 (ערכי GDB מדפיסים ערכי כניסה עבור משתנים מקומיים)
- PR gdb / 15415 (gdb פותר קישורים סמליים בעת העברת argv [0])
- PR cli / 15603 (CTRL-C לא יפסיק עוד לנחות)
- PR gdb / 15604 (gdbserver socket leak 7.5 regression)
- עבור לתמיכה בשפה.
- יעדים חדשים (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- שיפורים נוספים ב- script של Python.
- בדיקות SST (הגדרת מעקב סטטי) תומכות בבדיקות SystemTap.
- שיפורים ב- GDBserver (חיבורי stdio, הערכה בצד היעד של תנאי עצירה, שיפורים בפרוטוקול מרחוק).
- שיפורים אחרים (יכולת לעצור בעת טעינה / טעינה של ספריה משותפת, printf דינמי וכו ').
- ביטול איתור באגים ב- ARM.
- הקובץ הבינארי & quot; gdbtui & quot; כבר נטוש ולא ניתן עוד לבנות. השתמש ב- & quot; gdb -tui & quot; במקום זאת.
- קווי הקווים העמוקים מטופלים כעת באופן עקבי יותר.
- כעת ניתן לדלג על פונקציות וקבצים לא מעניינים בעת הצעד עם פונקציית & quot; דלג על & quot; ו & quot; דלג על הקובץ & quot; פקודות.
- נוספו פקודות להגדרה וקבלת הגבלת האורך המרבי של נקודת מבט לחומרה יעד מרוחק.
- סקריפט Python השתפר במידה ניכרת.
- בוצעו שיפורים רבים אחרים, תיקוני באגים ושינויים כלליים.
- תמיכה במטרות חדשות (כולל סימולטור):
- Xilinx MicroBlaze
- Renasas RX
- התכונות החדשות העיקריות הן:
- איתור באגים מרובה-תוכניות, המאפשר למאתר הבאגים לשלוט ביותר מ-
- תוכנית אחת באותה פעילות ב- GDB.
- איתור באגים של קובץ הפעלה עצמאי (PIE).
- הוא כולל גם שיפורים רבים ותיקוני באגים, כולל:
- התמיכה בפייתון הורחבה.
- C + + שיפורים תמיכה (מרחב שם, מפעילי משתתפות, תיקוני באגים)
- שיפורים בתמיכה ב- Tracepoint.
- שיפורים בתהליכים (שמור / שחזר יומן ביצוע, חומרה
- תמיכת watchpoint).
- שיפורי פרוטוקולים מרוחקים (ניפוי באגים בליבת Linux, מנות חדשות
- עבור תמיכה tracepoint)
מה חדש בגירסה 7.9.1:
מה חדש בגירסה 7.9:
מה חדש בגרסה 7.8.2:
מה חדש בגרסה 7.8.1:
python / 17364 (צריך שמות מדפסות טובים יותר ב- bond_registers.py)
מה חדש בגירסה 7.8:
מה חדש בגירסה 7.7:
מה חדש בגירסה 7.6.2:
מה חדש בגירסה 7.6.1:
tdep / 15420 (אין אפשרות לאתר באגים גרסאות חדשות יותר של x86-Solaris - Solaris 10, Update 10 או גירסה מתקדמת יותר)
מה חדש בגירסה 7.5:
מה חדש בגירסה 7.4:
מה חדש בגירסה 7.1:
תגובות לא נמצא