GDBSERVER(1) GNU Development Tools GDBSERVER(1)

lm32-elf-gdbserver - سرور اشکال‌زدایی از راه دور GDB برای معماری LatticeMico32

gdbserver comm prog [args...]

gdbserver --attach comm pid

gdbserver --multi comm

gdbserver برنامه‌ای است که به شما امکان می‌دهد GDB را روی سامانه‌ای متفاوت از سامانه‌ای که برنامه مورد اشکال‌زدایی را اجرا می‌کند، اجرا نمایید.

نحوه استفاده (سمت سرور (هدف)):

ابتدا باید یک نسخه از برنامه‌ای که می‌خواهید اشکال‌زدایی کنید روی سیستم هدف (target) قرار دهید. در صورت نیاز برای صرفه‌جویی در فضا می‌توان نمادها (symbols) را از برنامه حذف کرد (strip)، چرا که gdbserver نیازی به نمادها ندارد. تمام مدیریت نمادها توسط GDB در حال اجرا روی سیستم میزبان (host) انجام می‌شود.

برای استفاده از سرور، وارد سیستم هدف شوید و برنامه gdbserver را اجرا کنید. باید (الف) نحوه ارتباط با GDB، (ب) نام برنامه خود و (ج) آرگومان‌های آن را به آن اعلام کنید. ساختار کلی به این صورت است:

target> gdbserver <comm> <program> [<args> ...]

به عنوان مثال، هنگام استفاده از پورت سریال می‌توانید بنویسید:

target> gdbserver /dev/com1 emacs foo.txt

این دستور به gdbserver می‌گوید برنامه emacs را با آرگومان foo.txt اشکال‌زدایی کند و از طریق /dev/com1 با GDB ارتباط برقرار نماید. اکنون gdbserver منتظر می‌ماند تا GDB سیستم میزبان با آن ارتباط برقرار کند.

برای استفاده از اتصال TCP، می‌توانید بنویسید:

target> gdbserver host:2345 emacs foo.txt

این دستور تقریباً همان کار مثال قبل را انجام می‌دهد، با این تفاوت که از طریق TCP با "host" GDB ارتباط برقرار خواهیم کرد. آرگومان "host:2345" به این معنی است که انتظار یک اتصال TCP از طرف "host" به پورت محلی TCP شماره 2345 را داریم. (در حال حاضر، بخش "host" نادیده گرفته می‌شود.) تا زمانی که با پورت‌های فعال TCP در سیستم هدف تداخل نداشته باشد، می‌توانید هر شماره پورتی را انتخاب کنید. همین شماره پورت باید در دستور "target remote" در GDB میزبان استفاده شود که به زودی توضیح داده خواهد شد. توجه داشته باشید که اگر شماره پورتی را انتخاب کنید که با سرویس دیگری تداخل داشته باشد، gdbserver پیام خطا چاپ کرده و خارج می‌شود.

همچنین gdbserver می‌تواند به برنامه‌های در حال اجرا متصل شود (attach). این کار از طریق آرگومان --attach انجام می‌شود. ساختار دستور:

target> gdbserver --attach <comm> <pid>

مقدار pid شناسه فرآیند در حال اجرا است. نیازی نیست gdbserver را به فایل باینری فرآیند در حال اجرا ارجاع دهید.

برای راه‌اندازی "gdbserver" بدون مشخص کردن یک دستور اولیه برای اجرا یا شناسه فرآیند برای اتصال، از گزینه خط فرمان --multi استفاده کنید. در این حالت باید با استفاده از "target extended-remote" متصل شوید تا برنامه مورد نظر برای اشکال‌زدایی را اجرا کنید.

target> gdbserver --multi <comm>

نحوه استفاده (سمت میزبان):

شما به یک نسخه از برنامه هدف که نمادهای آن حذف نشده باشد (unstripped) روی سیستم میزبان خود نیاز دارید، زیرا GDB باید جداول نمادها و موارد مشابه آن را بررسی کند. GDB را طبق معمول راه‌اندازی کنید و برنامه هدف را به عنوان اولین آرگومان به آن بدهید. (اگر خط سریال با سرعتی غیر از 9600 باود کار می‌کند، ممکن است لازم باشد از گزینه --baud استفاده کنید.) یعنی "gdb TARGET-PROG" یا "gdb --baud BAUD TARGET-PROG". پس از آن، تنها دستور جدیدی که باید بدانید "target remote" (یا "target extended-remote") است. آرگومان آن یا نام یک دستگاه است (معمولاً یک دستگاه سریال، مانند /dev/ttyb)، یا یک توصیف‌کننده "HOST:PORT". به عنوان مثال:

(gdb) target remote /dev/ttyb

از طریق خط سریال /dev/ttyb با سرور ارتباط برقرار می‌کند و:

(gdb) target remote the-target:2345

از طریق یک اتصال TCP به پورت 2345 در میزبان `the-target` ارتباط برقرار می‌کند؛ جایی که قبلاً gdbserver را با همان شماره پورت اجرا کرده‌اید. توجه داشته باشید که برای اتصالات TCP، باید قبل از استفاده از دستور `target remote` برنامه gdbserver را راه‌اندازی کنید، در غیر این صورت ممکن است با خطایی مانند `Connection refused` مواجه شوید.

همچنین gdbserver می‌تواند چندین فرآیند زیرین (inferiors) را به طور همزمان اشکال‌زدایی کند، که در راهنمای GDB در بخش "Inferiors Connections and Programs" توضیح داده شده است -- دستور پوسته: "info -f gdb -n 'Inferiors Connections and Programs'". در این حالت از نگارش دستور "extended-remote" در GDB استفاده کنید:

(gdb) target extended-remote the-target:2345

گزینه --multi در gdbserver در چنین مواردی می‌تواند استفاده شود.

سه حالت مختلف برای فراخوانی gdbserver وجود دارد:

  • اشکال‌زدایی یک برنامه مشخص با نام برنامه:
    gdbserver <comm> <prog> [<args>...]

    پارامتر comm مشخص می‌کند که سرور چگونه باید با GDB ارتباط برقرار کند؛ این پارامتر می‌تواند نام یک دستگاه (برای استفاده از خط سریال)، یک شماره پورت TCP (":1234")، یا "-" یا "stdio" برای استفاده از ورودی/خروجی استاندارد "gdbserver" باشد. نام برنامه مورد نظر برای اشکال‌زدایی را در prog مشخص کنید. هر آرگومان باقی‌مانده عیناً به برنامه ارسال خواهد شد. هنگامی که برنامه به پایان برسد، GDB اتصال را می‌بندد و "gdbserver" خارج می‌شود.

  • اشکال‌زدایی یک برنامه مشخص با تعیین شناسه فرآیند (PID) یک برنامه در حال اجرا:
    gdbserver --attach <comm> <pid>

    پارامتر comm همان‌طور که در بالا شرح داده شد عمل می‌کند. شناسه فرآیند برنامه در حال اجرا را در pid وارد کنید؛ GDB بقیه کارها را انجام خواهد داد. همانند حالت قبل، با خروج فرآیند pid، GDB اتصال را می‌بندد و "gdbserver" خارج خواهد شد.

  • حالت چندفرآیندی -- اشکال‌زدایی بیش از یک برنامه/فرآیند:
    gdbserver --multi <comm>

    در این حالت، GDB می‌تواند به gdbserver دستور دهد که کدام دستور(ها) را اجرا کند. برخلاف ۲ حالت دیگر، با خروج فرآیند در حال اشکال‌زدایی، GDB اتصال را نمی‌بندد، بنابراین می‌توانید چندین فرآیند را در همان نشست اشکال‌زدایی کنید.

در هر یک از این حالت‌ها می‌توانید این گزینه‌ها را مشخص کنید:

فهرست کردن تمام گزینه‌ها همراه با توضیحات مختصر.
این گزینه باعث می‌شود gdbserver شماره نسخه خود را چاپ کرده و خارج شود.
gdbserver به یک برنامه در حال اجرا متصل خواهد شد. ساختار دستور:
target> gdbserver --attach <comm> <pid>

مقدار pid شناسه فرآیند یک برنامه در حال اجرا است. نیازی نیست gdbserver را به فایل باینری فرآیند در حال اجرا ارجاع دهید.

برای شروع "gdbserver" بدون ارائه دستور اولیه برای اجرا یا شناسه فرآیند برای اتصال، از این گزینه خط فرمان استفاده کنید. سپس می‌توانید با استفاده از "target extended-remote" متصل شوید و برنامه‌ای را که می‌خواهید اشکال‌زدایی کنید، آغاز نمایید. ساختار دستور:
target> gdbserver --multi <comm>
به "gdbserver" دستور می‌دهد تا اطلاعات وضعیت اضافی درباره فرآیند اشکال‌زدایی نمایش دهد. این گزینه برای توسعه "gdbserver" و ارسال گزارش باگ به توسعه‌دهندگان در نظر گرفته شده است.

هر option نام مؤلفه‌ای است که اشکال‌زدایی باید برای آن فعال شود. فهرست گزینه‌های ممکن عبارتند از all، threads، event-loop و remote. گزینه ویژه all همه مؤلفه‌ها را فعال می‌کند. فهرست گزینه‌ها از چپ به راست پردازش می‌شود و می‌توان به ابتدای یک گزینه نویسه "-" را اضافه کرد تا خروجی آن مؤلفه غیرفعال شود؛ بنابراین می‌توانید بنویسید:

target> gdbserver --debug=all,-event-loop

تا خروجی اشکال‌زدایی برای همه مؤلفه‌ها به جز event-loop روشن شود. اگر هیچ گزینه‌ای به --debug داده نشود، معادل --debug=threads در نظر گرفته می‌شود. این رفتار ممکن است در نسخه‌های آینده "gdbserver" تغییر کند.

به "gdbserver" دستور می‌دهد هرگونه خروجی اشکال‌زدایی را به filename مشخص‌شده ارسال کند. این گزینه برای توسعه "gdbserver" و ارسال گزارش باگ به توسعه‌دهندگان طراحی شده است.
به "gdbserver" دستور می‌دهد تا اطلاعات اضافی را در هر خط از خروجی اشکال‌زدایی بگنجاند.
یک لفاف (wrapper) برای راه‌اندازی برنامه‌ها جهت اشکال‌زدایی مشخص می‌کند. پس از این گزینه باید نام لفاف، سپس هر آرگومان خط فرمانی که باید به لفاف ارسال شود و در نهایت "--" به نشانه پایان آرگومان‌های لفاف قرار گیرد.
به‌طور پیش‌فرض، gdbserver پورت شنود TCP را باز نگه می‌دارد تا اتصالات اضافی امکان‌پذیر باشد. با این حال، اگر "gdbserver" را با گزینه --once راه‌اندازی کنید، پس از اتصال به اولین نشست GDB، شنود برای تلاش‌های اتصال بعدی را متوقف خواهد کرد.

مستندات کامل GDB به صورت یک کتابچه راهنمای Texinfo نگهداری می‌شود. اگر برنامه‌های "info" و "gdb" و مستندات Texinfo مربوط به GDB به درستی در سامانه شما نصب شده باشند، دستور

info gdb

باید دسترسی به راهنمای کامل را برای شما فراهم کند.

Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, July 1991.

حق نشر © 1988-2025 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.)

مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License) نسخه 1.3 یا هر نسخه بالاتر منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ با این تبصره که بخش‌های تغییرناپذیر عبارتند از «نرم‌افزار آزاد» و «نرم‌افزار آزاد به مستندات آزاد نیاز دارد»، متن روی جلد عبارت است از «یک راهنمای گنو»، و متن پشت جلد همانند بند (الف) در زیر است.

(الف) متن پشت جلد بنیاد نرم‌افزارهای آزاد عبارت است از: «شما مجاز به کپی و اصلاح این راهنمای گنو هستید. خرید نسخه‌ها از انتشارات گنو به پشتیبانی از بنیاد نرم‌افزارهای آزاد در توسعه گنو و ترویج آزادی نرم‌افزار کمک می‌کند.»

2025-12-20 gdb-17.1