.\" -*- 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)" aarch64\-linux\-gnu\-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 در GDB استفاده کنید: .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 در نظر گرفته می‌شود. این رفتار ممکن است در نسخه‌های آینده \f(CW\*(C`gdbserver\*(C'\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 مربوط به 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" Copyright (c) 1988\-2025 Free Software Foundation, Inc. .PP مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ با بخش‌های تغییرناپذیر «Free Software» و «Free Software Needs Free Documentation»، همراه با متون روی جلد «A GNU Manual» و متون پشت جلد مطابق بند (a) در زیر. .PP (a) متن پشت جلد FSF عبارت است از: «You are free to copy and modify this GNU Manual. Buying copies from GNU Press supports the FSF in developing GNU and promoting software freedom.»