.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "GDB 1" .TH GDB 1 2026-05-10 gdb-17.2 "GNU Development Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" riscv64-linux-gnu-gdb \- اشکال‌زدای گنو (دیباگر GNU) .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" riscv64-linux-gnu-gdb [OPTIONS] [\fIprog\fR|\fIprog\fR \fIprocID\fR|\fIprog\fR \fIcore\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" هدف یک اشکال‌زدا (دیباگر) مانند GDB این است که به شما امکان دهد ببینید حین اجرای یک برنامه دیگر، چه اتفاقی «درون» آن در حال رخ دادن است \-\- یا آن برنامه در لحظه از کار افتادن (کرش کردن) مشغول انجام چه کاری بوده است. .PP ابزار GDB می‌تواند چهار کار اصلی (به همراه امکانات دیگر برای پشتیبانی از آنها) جهت کمک به شما در به دام انداختن باگ‌ها حین وقوع انجام دهد: .IP \(bu 4 شروع برنامه شما با تعیین هر موردی که ممکن است رفتار آن را تحت تأثیر قرار دهد. .IP \(bu 4 متوقف ساختن برنامه تحت شرایط مشخص‌شده. .IP \(bu 4 بررسی آنچه رخ داده است، هنگامی که برنامه شما متوقف شده است. .IP \(bu 4 تغییر دادن موارد درون برنامه، به طوری که بتوانید اثرات اصلاح یک باگ را بیازمایید و به بررسی باگ‌های دیگر بپردازید. .PP می‌توانید از GDB برای اشکال‌زدایی برنامه‌های نوشته‌شده به زبان‌های C، C++، Fortran و Modula\-2 استفاده کنید. .PP ابزار GDB با دستور پوسته \f(CW\*(C`gdb\*(C'\fR (یا در اینجا \f(CW\*(C`riscv64\-linux\-gnu\-gdb\*(C'\fR) فراخوانی می‌شود. پس از اجرا، دستورات را از ترمینال می‌خواند تا زمانی که با دستور \f(CW\*(C`quit\*(C'\fR یا \f(CW\*(C`exit\*(C'\fR به آن بگویید خارج شود. می‌توانید با استفاده از دستور \f(CW\*(C`help\*(C'\fR راهنمایی‌های برخط را از خود GDB دریافت کنید. .PP می‌توانید \f(CW\*(C`gdb\*(C'\fR را بدون هیچ آرگومان یا گزینه‌ای اجرا کنید؛ اما معمول‌ترین روش برای شروع GDB با یک یا دو آرگومان است که در آن یک برنامه اجرایی به عنوان آرگومان مشخص می‌شود: .PP .Vb 1 \& gdb program .Ve .PP همچنین می‌توانید کار را با مشخص کردن هم‌زمان یک برنامه اجرایی و یک فایل core آغاز کنید: .PP .Vb 1 \& gdb program core .Ve .PP در صورت تمایل به اشکال‌زدایی یک فرایند در حال اجرا، می‌توانید در عوض یک شناسه فرایند (PID) را به عنوان آرگومان دوم تعیین کرده یا از گزینه \&\f(CW\*(C`\-p\*(C'\fR استفاده کنید: .PP .Vb 2 \& gdb program 1234 \& gdb \-p 1234 .Ve .PP این کار GDB را به فرایند \f(CW1234\fR متصل می‌کند. با گزینه \fB\-p\fR می‌توانید از نام فایل \fIprogram\fR صرف‌نظر کنید. .PP در اینجا برخی از پرکاربردترین دستورات GDB آورده شده است: .IP "\fBbreak [\fR\fIfile\fR\fB:][\fR\fIfunction\fR\fB|\fR\fIline\fR\fB]\fR" 4 .IX Item "break [file:][function|line]" تنظیم یک نقطه توقف (Breakpoint) در \fIfunction\fR یا \fIline\fR (درون \fIfile\fR). .IP "\fBrun [\fR\fIarglist\fR\fB]\fR" 4 .IX Item "run [arglist]" اجرای برنامه شما (با آرگومان‌های \fIarglist\fR، در صورت تعیین). .IP \fBbt\fR 4 .IX Item "bt" ردیابی به عقب (Backtrace): نمایش پشته فراخوانی‌های برنامه (Stack). .IP "\fBprint\fR \fIexpr\fR" 4 .IX Item "print expr" نمایش مقدار یک عبارت. .IP \fBc\fR 4 .IX Item "c" ادامه اجرای برنامه (پس از توقف، برای مثال در یک نقطه توقف). .IP \fBnext\fR 4 .IX Item "next" اجرای خط بعدی برنامه (پس از توقف)؛ رد شدن از روی فراخوانی‌های تابع در آن خط (\fIover\fR). .IP "\fBedit [\fR\fIfile\fR\fB:]\fR\fIfunction\fR" 4 .IX Item "edit [file:]function" مشاهده خطی از برنامه که در حال حاضر در آن متوقف شده است. .IP "\fBlist [\fR\fIfile\fR\fB:]\fR\fIfunction\fR" 4 .IX Item "list [file:]function" چاپ متن کد منبع برنامه در حوالی خطی که در حال حاضر متوقف شده است. .IP \fBstep\fR 4 .IX Item "step" اجرای خط بعدی برنامه (پس از توقف)؛ ورود به درون هر فراخوانی تابع در آن خط (\fIinto\fR). .IP "\fBhelp [\fR\fIname\fR\fB]\fR" 4 .IX Item "help [name]" نمایش اطلاعات درباره دستور \fIname\fR در GDB، یا اطلاعات عمومی درباره نحوه استفاده از GDB. .IP \fBquit\fR 4 .IX Item "quit" .PD 0 .IP \fBexit\fR 4 .IX Item "exit" .PD خروج از GDB. .PP برای جزئیات کامل درباره GDB، سند \fIUsing GDB: A Guide to the GNU Source-Level Debugger\fR، نوشته Richard M. Stallman و Roland H. Pesch را ببینید. همین متن به صورت برخط از طریق مدخل \f(CW\*(C`gdb\*(C'\fR در برنامه \f(CW\*(C`info\*(C'\fR نیز در دسترس است. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" هر آرگومانی غیر از گزینه‌ها یک فایل اجرایی و یک فایل core (یا شناسه فرایند) را مشخص می‌کند؛ به این معنی که نخستین آرگومان دیده‌شده که بدون فلگ گزینه باشد، معادل گزینه \fB\-\-se\fR است و دومین آرگومان، در صورت وجود، چنانچه نام یک فایل باشد معادل گزینه \fB\-c\fR خواهد بود. بسیاری از گزینه‌ها دارای هر دو شکل کامل و اختصاری هستند؛ هر دو شکل در اینجا نشان داده شده‌اند. اشکال طولانی نیز در صورت کوتاه شدن شناسایی می‌شوند، به شرطی که بخش کافی از نام گزینه برای رفع ابهام وجود داشته باشد. .PP اشکال اختصاری در اینجا با \fB\-\fR و اشکال طولانی با \fB\-\-\fR نشان داده شده‌اند تا نحوه نمایش آنها در \fB\-\-help\fR منعکس شود. با این حال، GDB تمام قواعد نگارشی زیر را برای بیشتر گزینه‌ها به رسمیت می‌شناسد: .ie n .IP """\-\-option=\fIvalue\fR""" 4 .el .IP \f(CW\-\-option=\fR\f(CIvalue\fR\f(CW\fR 4 .IX Item "--option=value" .PD 0 .ie n .IP """\-\-option \fIvalue\fR""" 4 .el .IP "\f(CW\-\-option \fR\f(CIvalue\fR\f(CW\fR" 4 .IX Item "--option value" .ie n .IP """\-option=\fIvalue\fR""" 4 .el .IP \f(CW\-option=\fR\f(CIvalue\fR\f(CW\fR 4 .IX Item "-option=value" .ie n .IP """\-option \fIvalue\fR""" 4 .el .IP "\f(CW\-option \fR\f(CIvalue\fR\f(CW\fR" 4 .IX Item "-option value" .ie n .IP """\-\-o=\fIvalue\fR""" 4 .el .IP \f(CW\-\-o=\fR\f(CIvalue\fR\f(CW\fR 4 .IX Item "--o=value" .ie n .IP """\-\-o \fIvalue\fR""" 4 .el .IP "\f(CW\-\-o \fR\f(CIvalue\fR\f(CW\fR" 4 .IX Item "--o value" .ie n .IP """\-o=\fIvalue\fR""" 4 .el .IP \f(CW\-o=\fR\f(CIvalue\fR\f(CW\fR 4 .IX Item "-o=value" .ie n .IP """\-o \fIvalue\fR""" 4 .el .IP "\f(CW\-o \fR\f(CIvalue\fR\f(CW\fR" 4 .IX Item "-o value" .PD .PP تمامی گزینه‌ها و آرگومان‌های خط فرمان ارائه‌شده به ترتیب متوالی پردازش می‌شوند. هنگام استفاده از گزینه \fB\-x\fR ترتیب آنها تأثیرگذار است. .IP \fB\-\-help\fR 4 .IX Item "--help" .PD 0 .IP \fB\-h\fR 4 .IX Item "-h" .PD فهرست کردن تمام گزینه‌ها همراه با توضیحات کوتاه. .IP \fB\-\-symbols=\fR\fIfile\fR 4 .IX Item "--symbols=file" .PD 0 .IP "\fB\-s\fR \fIfile\fR" 4 .IX Item "-s file" .PD خواندن جدول نمادها از \fIfile\fR. .IP \fB\-\-write\fR 4 .IX Item "--write" فعال‌سازی امکان نوشتن در فایل‌های اجرایی و فایل‌های core. .IP \fB\-\-exec=\fR\fIfile\fR 4 .IX Item "--exec=file" .PD 0 .IP "\fB\-e\fR \fIfile\fR" 4 .IX Item "-e file" .PD استفاده از \fIfile\fR به عنوان فایل اجرایی جهت اجرا در زمان مناسب، و بررسی داده‌های خالص در ارتباط با رونوشت حافظه (Core dump). .IP \fB\-\-se=\fR\fIfile\fR 4 .IX Item "--se=file" خواندن جدول نمادها از \fIfile\fR و استفاده از آن به عنوان فایل اجرایی. .IP \fB\-\-core=\fR\fIfile\fR 4 .IX Item "--core=file" .PD 0 .IP "\fB\-c\fR \fIfile\fR" 4 .IX Item "-c file" .PD استفاده از \fIfile\fR به عنوان رونوشت حافظه (Core dump) جهت بررسی. .IP \fB\-\-command=\fR\fIfile\fR 4 .IX Item "--command=file" .PD 0 .IP "\fB\-x\fR \fIfile\fR" 4 .IX Item "-x file" .PD اجرای دستورات GDB از \fIfile\fR. .IP \fB\-\-eval\-command=\fR\fIcommand\fR 4 .IX Item "--eval-command=command" .PD 0 .IP "\fB\-ex\fR \fIcommand\fR" 4 .IX Item "-ex command" .PD اجرای دستور مشخص‌شده \fIcommand\fR در GDB. .IP \fB\-\-init\-eval\-command=\fR\fIcommand\fR 4 .IX Item "--init-eval-command=command" .PD 0 .IP \fB\-iex\fR 4 .IX Item "-iex" .PD اجرای دستور GDB پیش از بارگذاری برنامه تحت بررسی (inferior). .IP \fB\-\-directory=\fR\fIdirectory\fR 4 .IX Item "--directory=directory" .PD 0 .IP "\fB\-d\fR \fIdirectory\fR" 4 .IX Item "-d directory" .PD افزودن \fIdirectory\fR به مسیر جستجوی فایل‌های کد منبع. .IP \fB\-\-nh\fR 4 .IX Item "--nh" عدم اجرای دستورات از \fI~/.config/gdb/gdbinit\fR، \&\fI~/.gdbinit\fR، \fI~/.config/gdb/gdbearlyinit\fR یا \&\fI~/.gdbearlyinit\fR .IP \fB\-\-nx\fR 4 .IX Item "--nx" .PD 0 .IP \fB\-n\fR 4 .IX Item "-n" .PD عدم اجرای دستورات از هرگونه فایل راه‌اندازی اولیه \fI.gdbinit\fR یا \&\fI.gdbearlyinit\fR. .IP \fB\-\-quiet\fR 4 .IX Item "--quiet" .PD 0 .IP \fB\-\-silent\fR 4 .IX Item "--silent" .IP \fB\-q\fR 4 .IX Item "-q" .PD حالت «بی‌صدا» (Quiet). پیام‌های آغازین و حق نشر چاپ نمی‌شوند. این پیام‌ها در حالت دسته‌ای (Batch) نیز خاموش می‌شوند. .IP \fB\-\-batch\fR 4 .IX Item "--batch" اجرا در حالت دسته‌ای (Batch). پس از پردازش تمام فایل‌های دستور تعیین‌شده با \fB\-x\fR (و در صورت ممانعت نشدن، \fI.gdbinit\fR)، با وضعیت \f(CW0\fR خارج می‌شود. در صورت بروز خطا در اجرای دستورات GDB در فایل‌های دستور، با وضعیت غیرصفر خارج خواهد شد. .Sp حالت دسته‌ای می‌تواند برای اجرای GDB به عنوان یک فیلتر مفید باشد، برای مثال جهت بارگیری و اجرای یک برنامه روی رایانه‌ای دیگر؛ به منظور افزایش کارایی این حالت، پیام .Sp .Vb 1 \& Program exited normally. .Ve .Sp (که معمولاً هنگام پایان یافتن اجرای هر برنامه‌ای تحت کنترل GDB صادر می‌شود) هنگام اجرا در حالت دسته‌ای صادر نمی‌گردد. .IP \fB\-\-batch\-silent\fR 4 .IX Item "--batch-silent" اجرا در حالت دسته‌ای درست مانند \fB\-\-batch\fR، اما کاملاً بی‌صدا. تمام خروجی‌های GDB خاموش می‌شوند (روی stderr تأثیری ندارد). این حالت بسیار ساکت‌تر از \&\fB\-\-silent\fR است و برای یک نشست تعاملی بلااستفاده خواهد بود. .Sp این حالت به ویژه هنگام استفاده از اهدافی که پیام‌های \fBLoading section\fR ارائه می‌دهند، بسیار کاربردی است. .Sp توجه داشته باشید اهدافی که خروجی خود را به جای نوشتن مستقیم در \f(CW\*(C`stdout\*(C'\fR، از طریق GDB ارسال می‌کنند نیز بی‌صدا خواهند شد. .IP "\fB\-\-args\fR \fIprog\fR \fB[\fR\fIarglist\fR\fB]\fR" 4 .IX Item "--args prog [arglist]" تغییر تفسیر خط فرمان به گونه‌ای که آرگومان‌های پس از این گزینه به عنوان آرگومان به برنامه تحت بررسی ارسال شوند. به عنوان مثال، دستور زیر را در نظر بگیرید: .Sp .Vb 1 \& gdb ./a.out \-q .Ve .Sp این دستور GDB را با گزینه \fB\-q\fR آغاز می‌کند و پیام آغازین را چاپ نمی‌کند. از سوی دیگر، استفاده از: .Sp .Vb 1 \& gdb \-\-args ./a.out \-q .Ve .Sp ابزار GDB را با پیام آغازین شروع کرده و گزینه را به برنامه تحت بررسی ارسال می‌کند. .IP \fB\-\-pid=\fR\fIpid\fR 4 .IX Item "--pid=pid" متصل کردن GDB به یک برنامه در حال اجرا با شناسه فرایند (PID) \fIpid\fR. .IP \fB\-\-tui\fR 4 .IX Item "--tui" باز کردن رابط کاربری متنی ترمینال (TUI). .IP \fB\-\-readnow\fR 4 .IX Item "--readnow" خواندن فوری تمام نمادها از فایل نماد مشخص‌شده در همان اولین دسترسی. .IP \fB\-\-readnever\fR 4 .IX Item "--readnever" عدم خواندن فایل‌های نماد. .IP \fB\-\-return\-child\-result\fR 4 .IX Item "--return-child-result" کد خروج GDB همانند کد خروج فرایند فرزند خواهد بود. .IP \fB\-\-configuration\fR 4 .IX Item "--configuration" چاپ جزئیات درباره پیکربندی GDB و سپس خروج. .IP \fB\-\-version\fR 4 .IX Item "--version" چاپ اطلاعات نسخه و سپس خروج. .IP \fB\-\-cd=\fR\fIdirectory\fR 4 .IX Item "--cd=directory" اجرای GDB با استفاده از \fIdirectory\fR به عنوان پوشه کاری، به جای پوشه جاری. .IP \fB\-\-data\-directory=\fR\fIdirectory\fR 4 .IX Item "--data-directory=directory" .PD 0 .IP \fB\-D\fR 4 .IX Item "-D" .PD اجرای GDB با استفاده از \fIdirectory\fR به عنوان پوشه داده‌ها. پوشه داده‌ها محلی است که GDB فایل‌های کمکی خود را در آن جستجو می‌کند. .IP \fB\-\-fullname\fR 4 .IX Item "--fullname" .PD 0 .IP \fB\-f\fR 4 .IX Item "-f" .PD ویرایشگر Emacs این گزینه را هنگام اجرای GDB به عنوان یک زیرفرایند تنظیم می‌کند. این گزینه به GDB اعلام می‌کند که هر بار یک فریم پشته نمایش داده می‌شود (که شامل هر بار توقف برنامه نیز هست)، نام کامل فایل و شماره خط را در قالبی استاندارد و قابل تشخیص نمایش دهد. این قالب قابل تشخیص شبیه به دو کاراکتر \fB\e032\fR است که پس از آن نام فایل، شماره خط و موقعیت کاراکتر جدا شده با دونقطه، و یک خط جدید می‌آید. برنامه واسط Emacs به GDB از این دو کاراکتر \fB\e032\fR به عنوان علامتی برای نمایش کد منبع مربوط به فریم استفاده می‌کند. .IP "\fB\-b\fR \fIbaudrate\fR" 4 .IX Item "-b baudrate" تنظیم سرعت خط (نرخ باد یا بیت بر ثانیه) در هر رابط سریالی که توسط GDB برای اشکال‌زدایی از راه دور استفاده می‌شود. .IP "\fB\-l\fR \fItimeout\fR" 4 .IX Item "-l timeout" تنظیم مهلت زمانی، بر حسب ثانیه، برای اشکال‌زدایی از راه دور. .IP \fB\-\-tty=\fR\fIdevice\fR 4 .IX Item "--tty=device" اجرا با استفاده از \fIdevice\fR برای ورودی و خروجی استاندارد برنامه شما. .SH "محیط (ENVIRONMENT)" .IX Header "ENVIRONMENT" .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" مستندات کامل GDB در قالب یک راهنمای Texinfo نگهداری می‌شود. چنانچه برنامه‌های \f(CW\*(C`info\*(C'\fR و \f(CW\*(C`gdb\*(C'\fR و مستندات Texinfo مربوط به GDB به درستی روی سیستم شما نصب شده باشند، دستور .PP .Vb 1 \& info gdb .Ve .PP باید دسترسی به راهنمای کامل را برای شما فراهم سازد. .PP \&\fIUsing GDB: A Guide to the GNU Source-Level Debugger\fR, Richard M. Stallman and Roland H. Pesch, July 1991. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) ۱۹۸۸\-۲۰۲۵ متعلق به Free Software Foundation, Inc. .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه جدیدتر منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ با بخش‌های تغییرناپذیر «Free Software» و «Free Software Needs Free Documentation»، با متون روی جلد «A GNU Manual» و با متون پشت جلد مطابق بند (الف) در زیر. .PP (الف) متن پشت جلد بنیاد نرم‌افزار آزاد عبارت است از: «شما در نسخه‌برداری و اصلاح این راهنمای گنو آزاد هستید. خرید نسخه‌ها از انتشارات گنو (GNU Press) از بنیاد در توسعه گنو و ارتقای آزادی نرم‌افزار حمایت می‌کند.»