.\" 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 \- سرور راه دور برای اشکال‌زدای گنو (GNU Debugger) .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 نیازی به نمادها (symbols) ندارد. تمام مدیریت نمادها توسط \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-1GDB\s0 میزبان از طریق \s-1TCP\s0 برقرار می‌شود. آرگومان \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 مربوط به GDB میزبان استفاده شود، که به‌زودی شرح داده خواهد شد. توجه داشته باشید که اگر شماره پورتی را انتخاب کنید که با سرویس دیگری تداخل دارد، \fBgdbserver\fR یک پیام خطا نمایش داده و خارج خواهد شد. .PP همچنین \&\fBgdbserver\fR می‌تواند به فرآیندهای در حال اجرا متصل شود (attach کند). این کار از طریق آرگومان \fB\-\-attach\fR انجام می‌شود. ساختار دستور چنین است: .PP .Vb 1 \& target> gdbserver \-\-attach .Ve .PP مقدار \&\fIpid\fR شناسهٔ فرآیند (\s-1PID\s0) فرآیندی است که هم‌اکنون در حال اجراست. نیازی نیست که به فایل باینری فرآیند در حال اجرا اشاره شود. .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 همان‌طور است که در بالا شرح داده شد. شناسه فرآیند یک برنامه در حال اجرا را در \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 شناسه فرآیند (\s-1ID\s0) یک فرآیند در حال اجرا است. نیازی نیست که \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، Richard M. Stallman و Roland H. Pesch، ژوئیه 1991. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" Copyright (c) 1988\-2025 Free Software Foundation, Inc. .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد \s-1GNU\s0» (نسخه 1.3 یا هر نسخهٔ متأخرتر منتشر شده توسط بنیاد نرم‌افزار آزاد) اعطا می‌شود؛ با این شرط که بخش‌های تغییرناپذیر شامل \*(L"Free Software\*(R" و \*(L"Free Software Needs Free Documentation\*(R"، متن روی جلد شامل \*(L"A \s-1GNU\s0 Manual\*(R"، و متن پشت جلد طبق بند (a) در زیر باشد. .PP (a) متن پشت جلد \s-1FSF\s0 عبارت است از: \*(L"You are free to copy and modify this \s-1GNU\s0 Manual. Buying copies from \s-1GNU\s0 Press supports the \s-1FSF\s0 in developing \s-1GNU\s0 and promoting software freedom.\*(R"