.\" -*- 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 "دستورات عمومی کاربر" .\" 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)" arm-none-eabi-gdb \- دیباگر گنو برای سیستم‌های توکار و میکروکنترلرهای ARM .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" gdb [OPTIONS] [\fIprog\fR|\fIprog\fR \fIprocID\fR|\fIprog\fR \fIcore\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" هدف از یک اشکال‌زدا (دیباگر) مانند GDB این است که به شما امکان دهد ببینید هنگام اجرای یک برنامه دیگر، در «درون» آن چه می‌گذرد \-\- یا این‌که آن برنامه در لحظه از کار افتادن (crash) مشغول انجام چه کاری بوده است. .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`quit\*(C'\fR یا \f(CW\*(C`exit\*(C'\fR در GDB فرمان خروج به آن بدهید. می‌توانید با استفاده از دستور \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 متصل (attach) می‌کنند. با استفاده از گزینه .B \-p می‌توانید نام فایل \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): نمایش پشته فراخوانی برنامه. .IP "\fBprint\fR \fIexpr\fR" 4 .IX Item "print expr" نمایش مقدار عبارت \fIexpr\fR. .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 (یا شناسه پردازش) را مشخص می‌کند؛ یعنی نخستین آرگومان یافت‌شده بدون گزینه، معادل گزینه .B \-\-se است، و آرگومان دوم (در صورت وجود)، چنانچه نام یک فایل باشد، معادل گزینه .B \-c خواهد بود. بسیاری از گزینه‌ها دارای هر دو شکل بلند و کوتاه هستند؛ هر دو شکل در اینجا نشان داده شده‌اند. شکل‌های بلند در صورتی که به اندازه کافی خلاصه شوند تا نامبهم و یکتا باشند نیز شناخته می‌شوند. .PP شکل‌های کوتاه در اینجا با .B \- و شکل‌های بلند با .B \-\- نشان داده شده‌اند تا چگونگی نمایش آن‌ها در .B \-\-help منعکس شود. با این حال، 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 تمامی گزینه‌ها و آرگومان‌های خط فرمان که وارد می‌کنید به ترتیب متوالی پردازش می‌شوند. این ترتیب زمانی که از گزینه .B \-x استفاده می‌شود دارای اهمیت است. .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 خواندن جدول نمادها (symbol table) از \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 اجرای دستور مشخص‌شده (\fIcommand\fR) در 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 به مسیر جستجوی فایل‌های منبع (source files). .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 mode) نیز نمایش داده نمی‌شوند. .IP \fB\-\-batch\fR 4 .IX Item "--batch" اجرا در حالت دسته‌ای (batch mode). پس از پردازش تمام فایل‌های دستوری تعیین‌شده با .B \-x (و فایل \&\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" اجرا در حالت دسته‌ای، دقیقاً مانند .BR \-\-batch ، اما کاملاً بی‌صدا. تمامی خروجی‌های GDB سرکوب می‌شوند (خروجی stderr دست‌نخورده باقی می‌ماند). این گزینه بسیار ساکت‌تر از .B \-\-silent بوده و برای یک نشست تعاملی بلااستفاده خواهد بود. .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 را با .B \-q شروع می‌کند و پیام مقدماتی را چاپ نمی‌نماید. از سوی دیگر، استفاده از: .Sp .Vb 1 \& gdb \-\-args ./a.out \-q .Ve .Sp ابزار GDB را همراه با پیام مقدماتی اجرا کرده و گزینه را به برنامه تحت بررسی منتقل می‌سازد. .IP \fB\-\-pid=\fR\fIpid\fR 4 .IX Item "--pid=pid" اتصال GDB به یک برنامه از پیش در حال اجرا، با شناسه پردازش \fIpid\fR. .IP \fB\-\-tui\fR 4 .IX Item "--tui" باز کردن رابط کاربری متنی ترمینال (Terminal User Interface). .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-to-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" تنظیم مهلت زمانی (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" حق نشر \(co ۱۹۸۸\-۲۰۲۵ بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP مجوز کپی، توزیع و/یا ویرایش این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزارهای آزاد؛ با بخش‌های ناوردا شامل «Free Software» و «Free Software Needs Free Documentation»، با متن‌های روی جلد شامل «A GNU Manual»، و با متن‌های پشت جلد به شرح بند (a) زیر اعطا می‌شود. .PP (a) متن پشت جلد بنیاد FSF عبارت است از: «شما در کپی و تغییر این راهنمای گنو آزاد هستید. خرید نسخه‌ها از انتشارات گنو (GNU Press) از بنیاد FSF در توسعه گنو و ارتقای آزادی نرم‌افزار پشتیبانی می‌کند.»