.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" 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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . 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 .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GDBSERVER 1" .TH GDBSERVER 1 "2025-12-20" "gdb-17.1" "ابزارهای توسعه گنو" .\" 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 \- کارگزار از راه دور برای اشکال‌زدای گنو .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 به شما امکان می‌دهد \s-1GDB\s0 را روی سامانه‌ای متفاوت از سامانه‌ای که برنامهٔ تحت اشکال‌زدایی را اجرا می‌کند، اجرا نمایید. .PP نحوهٔ استفاده (سمت کارگزار (هدف)): .PP ابتدا باید یک نسخه از برنامه‌ای را که قصد اشکال‌زدایی آن را دارید روی سامانهٔ هدف قرار دهید. در صورت نیاز می‌توان نشانه‌های برنامه را حذف کرد (strip) تا در فضا صرفه‌جویی شود، زیرا \&\fBgdbserver\fR نیازی به نشانه‌ها ندارد. تمام پردازش و مدیریت نشانه‌ها توسط \&\s-1GDB\s0 در حال اجرا روی سامانهٔ میزبان انجام می‌شود. .PP برای استفاده از کارگزار، به سامانهٔ هدف وارد شوید و برنامهٔ \fBgdbserver\fR را اجرا کنید. باید به آن اعلام کنید که (الف) چگونه با \s-1GDB\s0 ارتباط برقرار کند، (ب) نام برنامهٔ شما چیست، و (ج) آرگومان‌های آن کدامند. نحو کلی به این صورت است: .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 با \s-1GDB\s0 ارتباط برقرار نماید. اکنون \fBgdbserver\fR صبورانه منتظر می‌ماند تا \s-1GDB\s0 میزبان با آن ارتباط برقرار کند. .PP برای استفاده از یک اتصال \s-1TCP\s0، می‌توانید بنویسید: .PP .Vb 1 \& target> gdbserver host:2345 emacs foo.txt .Ve .PP این دستور تقریباً مشابه مثال قبل است، با این تفاوت که ما قصد داریم از طریق \s-1TCP\s0 با \s-1GDB\s0 در \f(CW\*(C`host\*(C'\fR ارتباط برقرار کنیم. آرگومان \f(CW\*(C`host:2345\*(C'\fR بدین معناست که ما انتظار یک اتصال \s-1TCP\s0 از سمت \f(CW\*(C`host\*(C'\fR به درگاه محلی \s-1TCP\s0 شمارهٔ 2345 را داریم. (در حال حاضر، بخش \f(CW\*(C`host\*(C'\fR نادیده گرفته می‌شود.) می‌توانید هر شماره‌ای را که می‌خواهید برای درگاه انتخاب کنید، به شرطی که با هیچ‌یک از درگاه‌های \s-1TCP\s0 موجود روی سامانهٔ هدف تداخل نداشته باشد. همین شماره درگاه باید در دستور \f(CW\*(C`target remote\*(C'\fR در \s-1GDB\s0 میزبان استفاده شود که کمی بعد توضیح داده خواهد شد. توجه داشته باشید که اگر شماره درگاهی را انتخاب کنید که با سرویس دیگری تداخل داشته باشد، \fBgdbserver\fR پیام خطایی نمایش داده و خارج می‌شود. .PP همچنین \&\fBgdbserver\fR می‌تواند به برنامه‌های در حال اجرا متصل شود. این کار از طریق آرگومان \fB\-\-attach\fR انجام می‌گیرد. نحو دستور به این صورت است: .PP .Vb 1 \& target> gdbserver \-\-attach .Ve .PP مقدار \&\fIpid\fR شناسهٔ فرایند (\s-1ID\s0) یک فرایند در حال اجراست. نیازی نیست که \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) از برنامهٔ هدف روی سامانهٔ میزبان خود نیاز دارید، چرا که \&\s-1GDB\s0 باید جدول نشانه‌ها و موارد مشابه را بررسی کند. همانند همیشه، \s-1GDB\s0 را با مشخص کردن برنامهٔ هدف به عنوان اولین آرگومان اجرا کنید. (اگر خط سریال با سرعتی غیر از 9600 باود کار می‌کند، ممکن است نیاز به استفاده از گزینهٔ \&\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 از طریق یک اتصال \s-1TCP\s0 به درگاه 2345 در میزبان `the\-target` ارتباط برقرار می‌کند، جایی که پیش‌تر \fBgdbserver\fR را با همان شماره درگاه اجرا کرده بودید. توجه داشته باشید که برای اتصال‌های \&\s-1TCP\s0، باید \fBgdbserver\fR را پیش از استفاده از دستور `target remote` راه‌اندازی کنید، در غیر این صورت ممکن است با خطایی شبیه به `Connection refused` مواجه شوید. .PP همچنین \&\fBgdbserver\fR می‌تواند چندین فرایند زیردست (inferiors) را به صورت هم‌زمان اشکال‌زدایی کند، که در راهنمای \s-1GDB\s0 در گره \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 در \s-1GDB\s0 استفاده کنید: .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 مشخص می‌کند که کارگزار چگونه باید با \s-1GDB\s0 ارتباط برقرار کند؛ این مقدار می‌تواند نام یک دستگاه (جهت استفاده از یک خط سریال)، یک شماره درگاه \s-1TCP\s0 (\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 مشخص کنید. هر آرگومان باقی‌مانده بدون تغییر به برنامه ارسال خواهد شد. هنگامی که برنامه پایان یابد، \s-1GDB\s0 اتصال را می‌بندد، و \f(CW\*(C`gdbserver\*(C'\fR خارج می‌شود. .IP "\(bu" 4 اشکال‌زدایی یک برنامه خاص با مشخص کردن شناسه فرایند (\s-1ID\s0) یک برنامه در حال اجرا: .Sp .Vb 1 \& gdbserver \-\-attach .Ve .Sp پارامتر \fIcomm\fR همانند توضیحات بالا است. شناسه فرایند (\s-1ID\s0) یک برنامه در حال اجرا را در \fIpid\fR مشخص کنید؛ \s-1GDB\s0 باقی کارها را انجام می‌دهد. مانند حالت قبل، هنگامی که فرایند \fIpid\fR پایان یابد، \&\s-1GDB\s0 اتصال را می‌بندد، و \f(CW\*(C`gdbserver\*(C'\fR خارج می‌شود. .IP "\(bu" 4 حالت چندفرایندی \*(-- اشکال‌زدایی بیش از یک برنامه/فرایند: .Sp .Vb 1 \& gdbserver \-\-multi .Ve .Sp در این حالت، \s-1GDB\s0 می‌تواند مشخص کند که \fBgdbserver\fR چه دستور(هایی) را اجرا کند. بر خلاف ۲ حالت دیگر، وقتی فرایند در حال اشکال‌زدایی خارج شود، \s-1GDB\s0 اتصال را نمی‌بندد، بنابراین می‌توانید چندین فرایند را در یک نشست اشکال‌زدایی کنید. .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 شناسه فرایند یک فرایند در حال اجراست. نیازی نیست \fBgdbserver\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 برای اجرای برنامه‌ها جهت اشکال‌زدایی مشخص می‌کند. پس از این گزینه باید نام wrapper، سپس هرگونه آرگومان خط فرمانی که باید به wrapper ارسال شود، و در ادامه \&\f(CW\*(C`\-\-\*(C'\fR برای مشخص کردن پایان آرگومان‌های wrapper بیاید. .IP "\fB\-\-once\fR" 4 .IX Item "--once" به‌طور پیش‌فرض، \fBgdbserver\fR درگاه شنود \s-1TCP\s0 را باز نگه می‌دارد تا اتصالات بعدی امکان‌پذیر باشد. با این حال، اگر \f(CW\*(C`gdbserver\*(C'\fR را با گزینه \fB\-\-once\fR اجرا کنید، پس از اتصال به اولین نشست \s-1GDB\s0، شنود برای هرگونه تلاش بعدی جهت اتصال را متوقف خواهد کرد..SH "محیط (ENVIRONMENT)" .IX Header "ENVIRONMENT" .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" مستندات کامل برای \s-1GDB\s0 به عنوان یک راهنمای Texinfo نگهداری می‌شود. اگر برنامه‌های \f(CW\*(C`info\*(C'\fR و \f(CW\*(C`gdb\*(C'\fR و مستندات Texinfo مربوط به \s-1GDB\s0 به‌درستی روی سیستم شما نصب شده باشند، دستور .PP .Vb 1 \& info gdb .Ve .PP باید دسترسی به راهنمای کامل را برای شما فراهم کند. .PP \&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR، ریچارد ام. استالمن و رولند اچ. پش، ژوئیه ۱۹۹۱. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" کپی‌رایت (c) ۱۹۸۸\-۲۰۲۵ Free Software Foundation, Inc. .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد \s-1GNU\s0» (\s-1GNU\s0 Free Documentation License)، نسخه ۱.۳ یا هر نسخهٔ متأخرتر منتشرشده توسط بنیاد نرم‌افزار آزاد (Free Software Foundation) اعطا می‌شود؛ به همراه بخش‌های تغییرناپذیر \*(L"Free Software\*(R" و \*(L"Free Software Needs Free Documentation\*(R"، متون روی جلد \*(L"A \s-1GNU\s0 Manual\*(R"، و متون پشت جلد مطابق بند (الف) در زیر. .PP (الف) متن پشت جلد \s-1FSF\s0 عبارت است از: \*(L"شما در کپی و تغییر این راهنمای \s-1GNU\s0 آزاد هستید. خرید نسخه‌ها از \s-1GNU\s0 Press از \s-1FSF\s0 در توسعهٔ \s-1GNU\s0 و ترویج آزادی نرم‌افزار حمایت می‌کند.\*(R"