.\" 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" "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)" lm32-elf-gdbserver \- سرور اشکال‌زدایی از راه دور GDB برای معماری LatticeMico32 .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 ابتدا باید یک نسخه از برنامه‌ای که می‌خواهید اشکال‌زدایی کنید روی سیستم هدف (target) قرار دهید. در صورت نیاز برای صرفه‌جویی در فضا می‌توان نمادها (symbols) را از برنامه حذف کرد (strip)، چرا که \&\fBgdbserver\fR نیازی به نمادها ندارد. تمام مدیریت نمادها توسط \s-1GDB\s0 در حال اجرا روی سیستم میزبان (host) انجام می‌شود. .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 با \f(CW\*(C`host\*(C'\fR \s-1GDB\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 شناسه فرآیند در حال اجرا است. نیازی نیست \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، باید قبل از استفاده از دستور `target remote` برنامه \fBgdbserver\fR را راه‌اندازی کنید، در غیر این صورت ممکن است با خطایی مانند `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 برای استفاده از ورودی/خروجی استاندارد \f(CW\*(C`gdbserver\*(C'\fR باشد. نام برنامه مورد نظر برای اشکال‌زدایی را در \fIprog\fR مشخص کنید. هر آرگومان باقی‌مانده عیناً به برنامه ارسال خواهد شد. هنگامی که برنامه به پایان برسد، \s-1GDB\s0 اتصال را می‌بندد و \f(CW\*(C`gdbserver\*(C'\fR خارج می‌شود. .IP "\(bu" 4 اشکال‌زدایی یک برنامه مشخص با تعیین شناسه فرآیند (\s-1PID\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 شناسه فرآیند یک برنامه در حال اجرا است. نیازی نیست \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) برای راه‌اندازی برنامه‌ها جهت اشکال‌زدایی مشخص می‌کند. پس از این گزینه باید نام لفاف، سپس هر آرگومان خط فرمانی که باید به لفاف ارسال شود و در نهایت \f(CW\*(C`\-\-\*(C'\fR به نشانه پایان آرگومان‌های لفاف قرار گیرد. .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 and Roland H. Pesch, July 1991. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر \(co 1988\-2025 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (\s-1GNU\s0 Free Documentation License) نسخه 1.3 یا هر نسخه بالاتر منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ با این تبصره که بخش‌های تغییرناپذیر عبارتند از «نرم‌افزار آزاد» و «نرم‌افزار آزاد به مستندات آزاد نیاز دارد»، متن روی جلد عبارت است از «یک راهنمای گنو»، و متن پشت جلد همانند بند (الف) در زیر است. .PP (الف) متن پشت جلد بنیاد نرم‌افزارهای آزاد عبارت است از: «شما مجاز به کپی و اصلاح این راهنمای گنو هستید. خرید نسخه‌ها از انتشارات گنو به پشتیبانی از بنیاد نرم‌افزارهای آزاد در توسعه گنو و ترویج آزادی نرم‌افزار کمک می‌کند.»