GDB(1) GNU Development Tools GDB(1)

riscv64-linux-gnu-gdb - اشکال‌زدای گنو (دیباگر GNU)

riscv64-linux-gnu-gdb [OPTIONS] [prog|prog procID|prog core]

هدف یک اشکال‌زدا (دیباگر) مانند GDB این است که به شما امکان دهد ببینید حین اجرای یک برنامه دیگر، چه اتفاقی «درون» آن در حال رخ دادن است -- یا آن برنامه در لحظه از کار افتادن (کرش کردن) مشغول انجام چه کاری بوده است.

ابزار GDB می‌تواند چهار کار اصلی (به همراه امکانات دیگر برای پشتیبانی از آنها) جهت کمک به شما در به دام انداختن باگ‌ها حین وقوع انجام دهد:

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

می‌توانید از GDB برای اشکال‌زدایی برنامه‌های نوشته‌شده به زبان‌های C، C++، Fortran و Modula-2 استفاده کنید.

ابزار GDB با دستور پوسته "gdb" (یا در اینجا "riscv64-linux-gnu-gdb") فراخوانی می‌شود. پس از اجرا، دستورات را از ترمینال می‌خواند تا زمانی که با دستور "quit" یا "exit" به آن بگویید خارج شود. می‌توانید با استفاده از دستور "help" راهنمایی‌های برخط را از خود GDB دریافت کنید.

می‌توانید "gdb" را بدون هیچ آرگومان یا گزینه‌ای اجرا کنید؛ اما معمول‌ترین روش برای شروع GDB با یک یا دو آرگومان است که در آن یک برنامه اجرایی به عنوان آرگومان مشخص می‌شود:

gdb program

همچنین می‌توانید کار را با مشخص کردن هم‌زمان یک برنامه اجرایی و یک فایل core آغاز کنید:

gdb program core

در صورت تمایل به اشکال‌زدایی یک فرایند در حال اجرا، می‌توانید در عوض یک شناسه فرایند (PID) را به عنوان آرگومان دوم تعیین کرده یا از گزینه "-p" استفاده کنید:

gdb program 1234
gdb -p 1234

این کار GDB را به فرایند 1234 متصل می‌کند. با گزینه -p می‌توانید از نام فایل program صرف‌نظر کنید.

در اینجا برخی از پرکاربردترین دستورات GDB آورده شده است:

تنظیم یک نقطه توقف (Breakpoint) در function یا line (درون file).
اجرای برنامه شما (با آرگومان‌های arglist، در صورت تعیین).
ردیابی به عقب (Backtrace): نمایش پشته فراخوانی‌های برنامه (Stack).
نمایش مقدار یک عبارت.
ادامه اجرای برنامه (پس از توقف، برای مثال در یک نقطه توقف).
اجرای خط بعدی برنامه (پس از توقف)؛ رد شدن از روی فراخوانی‌های تابع در آن خط (over).
مشاهده خطی از برنامه که در حال حاضر در آن متوقف شده است.
چاپ متن کد منبع برنامه در حوالی خطی که در حال حاضر متوقف شده است.
اجرای خط بعدی برنامه (پس از توقف)؛ ورود به درون هر فراخوانی تابع در آن خط (into).
نمایش اطلاعات درباره دستور name در GDB، یا اطلاعات عمومی درباره نحوه استفاده از GDB.
خروج از GDB.

برای جزئیات کامل درباره GDB، سند Using GDB: A Guide to the GNU Source-Level Debugger، نوشته Richard M. Stallman و Roland H. Pesch را ببینید. همین متن به صورت برخط از طریق مدخل "gdb" در برنامه "info" نیز در دسترس است.

هر آرگومانی غیر از گزینه‌ها یک فایل اجرایی و یک فایل core (یا شناسه فرایند) را مشخص می‌کند؛ به این معنی که نخستین آرگومان دیده‌شده که بدون فلگ گزینه باشد، معادل گزینه --se است و دومین آرگومان، در صورت وجود، چنانچه نام یک فایل باشد معادل گزینه -c خواهد بود. بسیاری از گزینه‌ها دارای هر دو شکل کامل و اختصاری هستند؛ هر دو شکل در اینجا نشان داده شده‌اند. اشکال طولانی نیز در صورت کوتاه شدن شناسایی می‌شوند، به شرطی که بخش کافی از نام گزینه برای رفع ابهام وجود داشته باشد.

اشکال اختصاری در اینجا با - و اشکال طولانی با -- نشان داده شده‌اند تا نحوه نمایش آنها در --help منعکس شود. با این حال، GDB تمام قواعد نگارشی زیر را برای بیشتر گزینه‌ها به رسمیت می‌شناسد:

"--option=value"
"--option value"
"-option=value"
"-option value"
"--o=value"
"--o value"
"-o=value"
"-o value"

تمامی گزینه‌ها و آرگومان‌های خط فرمان ارائه‌شده به ترتیب متوالی پردازش می‌شوند. هنگام استفاده از گزینه -x ترتیب آنها تأثیرگذار است.

فهرست کردن تمام گزینه‌ها همراه با توضیحات کوتاه.
خواندن جدول نمادها از file.
فعال‌سازی امکان نوشتن در فایل‌های اجرایی و فایل‌های core.
استفاده از file به عنوان فایل اجرایی جهت اجرا در زمان مناسب، و بررسی داده‌های خالص در ارتباط با رونوشت حافظه (Core dump).
خواندن جدول نمادها از file و استفاده از آن به عنوان فایل اجرایی.
استفاده از file به عنوان رونوشت حافظه (Core dump) جهت بررسی.
اجرای دستورات GDB از file.
اجرای دستور مشخص‌شده command در GDB.
اجرای دستور GDB پیش از بارگذاری برنامه تحت بررسی (inferior).
افزودن directory به مسیر جستجوی فایل‌های کد منبع.
عدم اجرای دستورات از ~/.config/gdb/gdbinit، ~/.gdbinit، ~/.config/gdb/gdbearlyinit یا ~/.gdbearlyinit
عدم اجرای دستورات از هرگونه فایل راه‌اندازی اولیه .gdbinit یا .gdbearlyinit.
حالت «بی‌صدا» (Quiet). پیام‌های آغازین و حق نشر چاپ نمی‌شوند. این پیام‌ها در حالت دسته‌ای (Batch) نیز خاموش می‌شوند.
اجرا در حالت دسته‌ای (Batch). پس از پردازش تمام فایل‌های دستور تعیین‌شده با -x (و در صورت ممانعت نشدن، .gdbinit)، با وضعیت 0 خارج می‌شود. در صورت بروز خطا در اجرای دستورات GDB در فایل‌های دستور، با وضعیت غیرصفر خارج خواهد شد.

حالت دسته‌ای می‌تواند برای اجرای GDB به عنوان یک فیلتر مفید باشد، برای مثال جهت بارگیری و اجرای یک برنامه روی رایانه‌ای دیگر؛ به منظور افزایش کارایی این حالت، پیام

Program exited normally.

(که معمولاً هنگام پایان یافتن اجرای هر برنامه‌ای تحت کنترل GDB صادر می‌شود) هنگام اجرا در حالت دسته‌ای صادر نمی‌گردد.

اجرا در حالت دسته‌ای درست مانند --batch، اما کاملاً بی‌صدا. تمام خروجی‌های GDB خاموش می‌شوند (روی stderr تأثیری ندارد). این حالت بسیار ساکت‌تر از --silent است و برای یک نشست تعاملی بلااستفاده خواهد بود.

این حالت به ویژه هنگام استفاده از اهدافی که پیام‌های Loading section ارائه می‌دهند، بسیار کاربردی است.

توجه داشته باشید اهدافی که خروجی خود را به جای نوشتن مستقیم در "stdout"، از طریق GDB ارسال می‌کنند نیز بی‌صدا خواهند شد.

تغییر تفسیر خط فرمان به گونه‌ای که آرگومان‌های پس از این گزینه به عنوان آرگومان به برنامه تحت بررسی ارسال شوند. به عنوان مثال، دستور زیر را در نظر بگیرید:
gdb ./a.out -q

این دستور GDB را با گزینه -q آغاز می‌کند و پیام آغازین را چاپ نمی‌کند. از سوی دیگر، استفاده از:

gdb --args ./a.out -q

ابزار GDB را با پیام آغازین شروع کرده و گزینه را به برنامه تحت بررسی ارسال می‌کند.

متصل کردن GDB به یک برنامه در حال اجرا با شناسه فرایند (PID) pid.
باز کردن رابط کاربری متنی ترمینال (TUI).
خواندن فوری تمام نمادها از فایل نماد مشخص‌شده در همان اولین دسترسی.
عدم خواندن فایل‌های نماد.
کد خروج GDB همانند کد خروج فرایند فرزند خواهد بود.
چاپ جزئیات درباره پیکربندی GDB و سپس خروج.
چاپ اطلاعات نسخه و سپس خروج.
اجرای GDB با استفاده از directory به عنوان پوشه کاری، به جای پوشه جاری.
اجرای GDB با استفاده از directory به عنوان پوشه داده‌ها. پوشه داده‌ها محلی است که GDB فایل‌های کمکی خود را در آن جستجو می‌کند.
ویرایشگر Emacs این گزینه را هنگام اجرای GDB به عنوان یک زیرفرایند تنظیم می‌کند. این گزینه به GDB اعلام می‌کند که هر بار یک فریم پشته نمایش داده می‌شود (که شامل هر بار توقف برنامه نیز هست)، نام کامل فایل و شماره خط را در قالبی استاندارد و قابل تشخیص نمایش دهد. این قالب قابل تشخیص شبیه به دو کاراکتر \032 است که پس از آن نام فایل، شماره خط و موقعیت کاراکتر جدا شده با دونقطه، و یک خط جدید می‌آید. برنامه واسط Emacs به GDB از این دو کاراکتر \032 به عنوان علامتی برای نمایش کد منبع مربوط به فریم استفاده می‌کند.
تنظیم سرعت خط (نرخ باد یا بیت بر ثانیه) در هر رابط سریالی که توسط GDB برای اشکال‌زدایی از راه دور استفاده می‌شود.
تنظیم مهلت زمانی، بر حسب ثانیه، برای اشکال‌زدایی از راه دور.
اجرا با استفاده از device برای ورودی و خروجی استاندارد برنامه شما.

مستندات کامل GDB در قالب یک راهنمای Texinfo نگهداری می‌شود. چنانچه برنامه‌های "info" و "gdb" و مستندات Texinfo مربوط به GDB به درستی روی سیستم شما نصب شده باشند، دستور

info gdb

باید دسترسی به راهنمای کامل را برای شما فراهم سازد.

Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, July 1991.

حق نشر (c) ۱۹۸۸-۲۰۲۵ متعلق به Free Software Foundation, Inc.

اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه جدیدتر منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ با بخش‌های تغییرناپذیر «Free Software» و «Free Software Needs Free Documentation»، با متون روی جلد «A GNU Manual» و با متون پشت جلد مطابق بند (الف) در زیر.

(الف) متن پشت جلد بنیاد نرم‌افزار آزاد عبارت است از: «شما در نسخه‌برداری و اصلاح این راهنمای گنو آزاد هستید. خرید نسخه‌ها از انتشارات گنو (GNU Press) از بنیاد در توسعه گنو و ارتقای آزادی نرم‌افزار حمایت می‌کند.»

2026-05-10 gdb-17.2