.\" -*- 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)" avr-gdb, gdb \- اشکالزدای گنو برای میکروکنترلرهای AVR .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 به آن فرمان خروج ندهید، دستورات را از ترمینال می‌خواند. می‌توانید با استفاده از دستور \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): نمایش پشته فراخوانی‌های برنامه. .IP "\fBprint\fR \fIexpr\fR" 4 .IX Item "print expr" نمایش مقدار یک عبارت. .IP \fBc\fR 4 .IX Item "c" ادامه اجرای برنامه (پس از توقف، برای مثال در یک نقطه توقف). .IP \fBnext\fR 4 .IX Item "next" اجرای خط بعدی برنامه (پس از توقف)؛ رد شدن از روی هر فراخوانی تابع در آن خط (\fIstep over\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" اجرای خط بعدی برنامه (پس از توقف)؛ ورود به داخل هر فراخوانی تابع در آن خط (\fIstep into\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)" هر آرگومانی به جز گزینه‌ها، یک فایل اجرایی و فایل هسته (یا شناسه فرایند) را مشخص می‌کند؛ یعنی نخستین آرگومانِ بدون فلگِ گزینه معادل گزینه \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 اجرای \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 به مسیر جستجوی فایل‌های کد منبع. .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 «حالت ساکت». عدم چاپ پیام‌های مقدماتی و حق نشر. این پیام‌ها در حالت دسته‌ای (batch mode) نیز نمایش داده نمی‌شوند. .IP \fB\-\-batch\fR 4 .IX Item "--batch" اجرا در حالت دسته‌ای (batch mode). پس از پردازش تمام فایل‌های دستور مشخص‌شده با \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 این گزینه به ویژه هنگام استفاده از اهدافی (targets) که پیام‌های \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]" تغییر تفسیر خط فرمان به طوری که آرگومان‌های پس از این گزینه به عنوان آرگومان به برنامه تحت اشکال‌زدایی (inferior) ارسال شوند. به عنوان مثال، دستور زیر را در نظر بگیرید: .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 به یک برنامه از قبل در حال اجرا با شناسه فرایند \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" تنظیم مهلت زمانی (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 1988\-2025 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه بالاتر منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، با متون جلد رویی به عنوان «یک کتابچه راهنمای گنو (A GNU Manual)»، و با متون جلد پشتی به شرح (الف) در زیر. .PP (الف) متن جلد پشتی FSF عبارت است از: «شما در کپی و تغییر این راهنمای گنو آزاد هستید. خرید نسخه‌ها از GNU Press از FSF در توسعه گنو و ترویج آزادی نرم‌افزار حمایت می‌کند.»