.\" -*- 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 "GDBSERVER 1" .TH GDBSERVER 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)" gdbserver \- کارساز از راه دور برای اشکال‌زدای گنو (GDB) .SH "خلاصه دستور (SYNOPSIS)" .IX Header "خلاصه دستور (SYNOPSIS)" gdbserver \fIcomm\fR \fIprog\fR [\fIargs\fR...] .PP gdbserver \-\-attach \fIcomm\fR \fIpid\fR .PP gdbserver \-\-multi \fIcomm\fR .SH "توضیحات (DESCRIPTION)" .IX Header "توضیحات (DESCRIPTION)" برنامه \&\fBgdbserver\fR به شما امکان می‌دهد GDB را روی دستگاهی متفاوت از دستگاهی که برنامه مورد اشکال‌زدایی در آن در حال اجرا است، اجرا کنید. .PP طرز استفاده (سمت کارساز / هدف): .PP ابتدا باید یک نسخه از برنامه‌ای را که می‌خواهید اشکال‌زدایی کنید روی سامانه هدف قرار دهید. برنامه را می‌توان برای صرفه‌جویی در فضا در صورت نیاز strip کرد (نمادها را حذف نمود)، زیرا \&\fBgdbserver\fR به نمادها (symbols) نیازی ندارد. تمام مدیریت نمادها توسط GDB در حال اجرا روی سامانه میزبان انجام می‌شود. .PP برای استفاده از کارساز، وارد سامانه هدف می‌شوید و برنامه \fBgdbserver\fR را اجرا می‌کنید. باید به آن مشخص کنید: (الف) چگونه با GDB ارتباط برقرار کند، (ب) نام برنامه شما چیست، و (ج) آرگومان‌های آن چیست. نحو کلی به این صورت است: .PP .Vb 1 \& target> gdbserver [ ...] .Ve .PP برای مثال، با استفاده از یک درگاه سریال، می‌توانید بنویسید: .PP .Vb 1 \& target> gdbserver /dev/com1 emacs foo.txt .Ve .PP این به \fBgdbserver\fR می‌گوید که emacs را با آرگومان foo.txt اشکال‌زدایی کند و از طریق \fI/dev/com1\fR با GDB ارتباط برقرار نماید. اکنون \fBgdbserver\fR منتظر می‌ماند تا GDB میزبان با آن ارتباط برقرار کند. .PP برای استفاده از یک اتصال TCP، می‌توانید بنویسید: .PP .Vb 1 \& target> gdbserver host:2345 emacs foo.txt .Ve .PP این دستور دقیقاً همان کار مثال قبل را انجام می‌دهد، با این تفاوت که از طریق TCP با \f(CW\*(C`host\*(C'\fR GDB ارتباط برقرار می‌کنیم. آرگومان \f(CW\*(C`host:2345\*(C'\fR به این معنی است که ما منتظر یک اتصال TCP از \f(CW\*(C`host\*(C'\fR به درگاه محلی TCP با شماره ۲۳۴۵ هستیم. (در حال حاضر، بخش \f(CW\*(C`host\*(C'\fR نادیده گرفته می‌شود.) تا زمانی که شماره درگاه با هیچ‌یک از درگاه‌های TCP موجود در سامانه هدف تداخل نداشته باشد، می‌توانید هر شماره‌ای را انتخاب کنید. همین شماره درگاه باید در دستور \f(CW\*(C`target remote\*(C'\fR مربوط به GDB میزبان استفاده شود، که به زودی شرح داده خواهد شد. توجه داشته باشید اگر شماره درگاهی را انتخاب کنید که با سرویس دیگری تداخل دارد، \fBgdbserver\fR پیام خطا چاپ کرده و خارج می‌شود. .PP برنامه \&\fBgdbserver\fR همچنین می‌تواند به برنامه‌های در حال اجرا متصل شود (attach). این کار از طریق آرگومان \fB\-\-attach\fR انجام می‌شود. نحو به این صورت است: .PP .Vb 1 \& target> gdbserver \-\-attach .Ve .PP مقدار \&\fIpid\fR شناسه فرآیند در حال اجرا است. نیازی نیست \fBgdbserver\fR را به پرونده باینری فرآیند در حال اجرا ارجاع دهید. .PP برای شروع \f(CW\*(C`gdbserver\*(C'\fR بدون ارائه دستور اولیه برای اجرا یا شناسه فرآیند برای اتصال، از گزینه خط فرمان \fB\-\-multi\fR استفاده کنید. در این حالت باید با استفاده از \f(CW\*(C`target extended\-remote\*(C'\fR متصل شوید تا برنامه‌ای را که می‌خواهید اشکال‌زدایی کنید اجرا نمایید. .PP .Vb 1 \& target> gdbserver \-\-multi .Ve .PP طرز استفاده (سمت میزبان): .PP شما به یک نسخه حاوی نمادها (unstripped) از برنامه هدف روی سامانه میزبان خود نیاز دارید، زیرا GDB باید جدول‌های نماد و موارد مشابه را بررسی کند. GDB را مطابق معمول اجرا کنید، با این تفاوت که برنامه هدف آرگومان اول آن باشد. (اگر خط سریال با سرعتی غیر از ۹۶۰۰ کار می‌کند، ممکن است لازم باشد از گزینه \&\fB\-\-baud\fR استفاده کنید.) یعنی \f(CW\*(C`gdb TARGET\-PROG\*(C'\fR یا \f(CW\*(C`gdb \-\-baud BAUD TARGET\-PROG\*(C'\fR. پس از آن، تنها دستور جدیدی که باید بدانید \f(CW\*(C`target remote\*(C'\fR (یا \f(CW\*(C`target extended\-remote\*(C'\fR) است. آرگومان آن یا نام یک دستگاه است (معمولاً یک دستگاه سریال مانند \fI/dev/ttyb\fR)، یا یک توصیف‌کننده \f(CW\*(C`HOST:PORT\*(C'\fR. به عنوان مثال: .PP .Vb 1 \& (gdb) target remote /dev/ttyb .Ve .PP از طریق خط سریال \fI/dev/ttyb\fR با کارساز ارتباط برقرار می‌کند، و: .PP .Vb 1 \& (gdb) target remote the\-target:2345 .Ve .PP از طریق اتصال TCP به درگاه ۲۳۴۵ روی میزبان `the\-target'، جایی که قبلاً \fBgdbserver\fR را با همان شماره درگاه راه‌اندازی کرده‌اید، ارتباط برقرار می‌کند. توجه داشته باشید که برای اتصالات TCP، باید پیش از استفاده از دستور 'target remote'، کارساز \fBgdbserver\fR را راه‌اندازی کرده باشید، در غیر این صورت ممکن است با خطایی مانند `Connection refused' مواجه شوید. .PP برنامه \&\fBgdbserver\fR همچنین می‌تواند چندین فرآیند زیرین (inferiors) را به طور همزمان اشکال‌زدایی کند، که در راهنمای GDB در بخش \f(CW\*(C`Inferiors Connections and Programs\*(C'\fR توضیح داده شده است \-\- دستور پوسته \f(CW\*(C`info \-f gdb \-n \*(AqInferiors Connections and Programs\*(Aq\*(C'\fR. در این حالت از دستور دیگر یعنی \f(CW\*(C`extended\-remote\*(C'\fR استفاده کنید: .PP .Vb 1 \& (gdb) target extended\-remote the\-target:2345 .Ve .PP در این حالت گزینه \fB\-\-multi\fR در \fBgdbserver\fR ممکن است استفاده شود یا نشود. .SH "گزینه‌ها (OPTIONS)" .IX Header "گزینه‌ها (OPTIONS)" سه حالت مختلف برای فراخوانی \fBgdbserver\fR وجود دارد: .IP \(bu 4 اشکال‌زدایی یک برنامه خاص با تعیین نام برنامه آن: .Sp .Vb 1 \& gdbserver [...] .Ve .Sp پارامتر \fIcomm\fR نحوه ارتباط کارساز با GDB را مشخص می‌کند؛ این پارامتر یا نام دستگاه است (برای خط سریال)، یا یک شماره درگاه TCP (\f(CW\*(C`:1234\*(C'\fR)، یا \f(CW\*(C`\-\*(C'\fR یا \f(CW\*(C`stdio\*(C'\fR برای استفاده از stdin/stdout در \f(CW\*(C`gdbserver\*(C'\fR. نام برنامه مورد اشکال‌زدایی را در \fIprog\fR مشخص کنید. هر آرگومان باقی‌مانده بدون تغییر به برنامه ارسال می‌شود. وقتی برنامه پایان می‌یابد، GDB اتصال را قطع کرده و \f(CW\*(C`gdbserver\*(C'\fR خارج خواهد شد. .IP \(bu 4 اشکال‌زدایی یک برنامه خاص با تعیین شناسه فرآیند در حال اجرای آن: .Sp .Vb 1 \& gdbserver \-\-attach .Ve .Sp پارامتر \fIcomm\fR مطابق توضیحات بالا است. شناسه فرآیند در حال اجرا را در \fIpid\fR ارائه دهید؛ GDB سایر کارها را انجام خواهد داد. مانند حالت قبل، هنگامی که فرآیند \fIpid\fR پایان می‌یابد، GDB اتصال را بسته و \f(CW\*(C`gdbserver\*(C'\fR خارج می‌شود. .IP \(bu 4 حالت چندفرآیندی \-\- اشکال‌زدایی بیش از یک برنامه/فرآیند: .Sp .Vb 1 \& gdbserver \-\-multi .Ve .Sp در این حالت، GDB می‌تواند به \fBgdbserver\fR دستور دهد که چه دستور(هایی) را اجرا کند. برخلاف ۲ حالت دیگر، وقتی فرآیند در حال اشکال‌زدایی پایان یابد GDB اتصال را نخواهد بست، بنابراین می‌توانید چندین فرآیند را در همان نشست اشکال‌زدایی کنید. .PP در هر یک از حالات می‌توانید این گزینه‌ها را مشخص کنید: .IP \fB\-\-help\fR 4 .IX Item "--help" فهرست کردن تمامی گزینه‌ها به همراه توضیحات کوتاه. .IP \fB\-\-version\fR 4 .IX Item "--version" چاپ شماره نسخه \fBgdbserver\fR و خروج. .IP \fB\-\-attach\fR 4 .IX Item "--attach" برنامه \&\fBgdbserver\fR به یک فرآیند در حال اجرا متصل می‌شود. نحو به صورت زیر است: .Sp .Vb 1 \& target> gdbserver \-\-attach .Ve .Sp مقدار \&\fIpid\fR شناسه فرآیند در حال اجرا است. نیازی به مشخص کردن پرونده باینری نیست. .IP \fB\-\-multi\fR 4 .IX Item "--multi" برای شروع \f(CW\*(C`gdbserver\*(C'\fR بدون ارائه دستور اولیه جهت اجرا یا شناسه فرآیند جهت اتصال. سپس می‌توانید با استفاده از \f(CW\*(C`target extended\-remote\*(C'\fR متصل شده و برنامه مورد اشکال‌زدایی را شروع کنید. نحو به این صورت است: .Sp .Vb 1 \& target> gdbserver \-\-multi .Ve .IP \fB\-\-debug\fR[\fB=option1,option2,...\fR] 4 .IX Item "--debug[=option1,option2,...]" دستور به \f(CW\*(C`gdbserver\*(C'\fR برای نمایش اطلاعات وضعیت بیشتر در مورد فرآیند اشکال‌زدایی. این گزینه برای توسعه \f(CW\*(C`gdbserver\*(C'\fR و گزارش خطا به توسعه‌دهندگان در نظر گرفته شده است. .Sp هر \fIoption\fR نام مؤلفه‌ای است که اشکال‌زدایی برای آن باید فعال شود. فهرست گزینه‌های ممکن عبارتند از \fBall\fR، \&\fBthreads\fR، \fBevent-loop\fR، \fBremote\fR. گزینه ویژه \fBall\fR تمام مؤلفه‌ها را فعال می‌کند. فهرست گزینه‌ها از چپ به راست پردازش می‌شود و یک گزینه می‌تواند با نویسه \&\f(CW\*(C`\-\*(C'\fR پیشوند شود تا خروجی آن مؤلفه غیرفعال گردد، مثلاً: .Sp .Vb 1 \& target> gdbserver \-\-debug=all,\-event\-loop .Ve .Sp برای فعال‌سازی خروجی اشکال‌زدایی برای همه مؤلفه‌ها به جز \fBevent-loop\fR. اگر هیچ گزینه‌ای به \fB\-\-debug\fR داده نشود، معادل با \fB\-\-debug=threads\fR خواهد بود. .IP \fB\-\-debug\-file=\fR\fIfilename\fR 4 .IX Item "--debug-file=filename" دستور به \f(CW\*(C`gdbserver\*(C'\fR برای ارسال هرگونه خروجی اشکال‌زدایی به نام پرونده \fIfilename\fR داده‌شده. این گزینه برای توسعه \f(CW\*(C`gdbserver\*(C'\fR و گزارش اشکال به توسعه‌دهندگان است. .IP \fB\-\-debug\-format=option1\fR[\fB,option2,...\fR] 4 .IX Item "--debug-format=option1[,option2,...]" دستور به \f(CW\*(C`gdbserver\*(C'\fR برای افزودن اطلاعات بیشتر به هر خط از خروجی اشکال‌زدایی. .IP \fB\-\-wrapper\fR 4 .IX Item "--wrapper" مشخص کردن یک لفاف (wrapper) برای راه‌اندازی برنامه‌ها جهت اشکال‌زدایی. به دنبال این گزینه باید نام لفاف، سپس آرگومان‌های خط فرمان ارسالی به لفاف، و سپس \&\f(CW\*(C`\-\-\*(C'\fR که نشان‌دهنده پایان آرگومان‌های لفاف است، بیاید. .IP \fB\-\-once\fR 4 .IX Item "--once" به طور پیش‌فرض، \fBgdbserver\fR درگاه گوش‌دادن TCP را باز نگه می‌دارد تا امکان اتصالات بیشتر وجود داشته باشد. با این حال، اگر \f(CW\*(C`gdbserver\*(C'\fR را با گزینه \fB\-\-once\fR اجرا کنید، پس از برقراری اتصال به اولین نشست GDB، گوش دادن به تلاش‌های بعدی برای اتصال متوقف خواهد شد. .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 گنو به درستی در سامانه شما نصب شده باشند، دستور .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)" Copyright (c) 1988\-2025 Free Software Foundation, Inc. .PP مجوز کپی، توزیع و/یا اصلاح این سند تحت شرایط مجوز اسناد آزاد گنو (GNU FDL)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود.