'\" t .\" Title: vgdb .\" Author: [بخش "نویسنده" را ببینید] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 08/11/2026 .\" Manual: vgdb .\" Source: Release 3.25.1 .\" Language: Persian .\" .TH "VGDB" "1" "08/11/2026" "Release 3\&.25\&.1" "دستورات عمومی کاربر" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" vgdb \- واسط میان Valgrind و GDB یا پوسته .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBvgdb\fR\ 'u \fBvgdb\fR [\fIگزینه‌ها\fR] .SH "توضیحات (DESCRIPTION)" .PP \fBvgdb\fR («Valgrind to GDB») به‌عنوان یک واسط میان Valgrind و GDB یا یک پوسته (شل) استفاده می‌شود\&. این ابزار دارای سه حالت استفاده است: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} به‌عنوان یک ابزار مستقل، از خط فرمان پوسته برای ارسال دستورات پایش (monitor) به فرایندی که تحت Valgrind اجرا می‌شود به کار می‌رود\&. برای این کاربرد، پس از گزینه(های) vgdb باید دستور پایش مورد نظر جهت ارسال قرار گیرد\&. برای ارسال بیش از یک دستور، آن‌ها را با گزینه \fB\-c\fR از یکدیگر جدا کنید\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} در ترکیب با دستور «target remote |» در GDB، به‌عنوان برنامه بازپخش (relay) میان GDB و Valgrind gdbserver استفاده می‌شود\&. برای این حالت استفاده، فقط گزینه‌(ها) مجاز هستند و هیچ دستوری نباید داده شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} در حالت \fB\-\-multi\fR ، vgdb از پروتکل توسعه‌یافته ریموت (extended remote protocol) برای برقراری ارتباط با GDB استفاده می‌کند\&. این ویژگی به شما امکان می‌دهد خروجی‌های هر دو برنامه valgrind و GDB را در نشست GDB مشاهده کنید\&. این کار از طریق دستور «target extended\-remote | vgdb \-\-multi» میسر می‌شود\&. در این حالت دیگر نیازی به اجرای دستی valgrind توسط خودتان نیست؛ vgdb به محض اینکه gdb دستور اجرای برنامه جدید را بدهد، valgrind را راه‌اندازی می‌کند\&. برای این حالت استفاده، گزینه‌های vgdb همچنین می‌توانند شامل \fB\-\-valgrind\fR و \fB\-\-vargs\fR باشند تا چگونگی راه‌اندازی valgrind را توصیف کنند\&. .RE .SH "گزینه‌ها (OPTIONS)" .PP \fB\-\-pid=\fR .RS 4 شناسه فرایند (PID) فرایندی را که vgdb باید به آن متصل شود مشخص می‌کند\&. این گزینه در شرایطی مفید است که بیش از یک Valgrind gdbserver برای اتصال در دسترس باشد\&. اگر آرگومان \fB\-\-pid\fR داده نشود و چندین فرایند Valgrind gdbserver در حال اجرا باشند، vgdb فهرست چنین فرایندهایی را گزارش کرده و سپس خارج می‌شود\&. .RE .PP \fB\-\-vgdb\-prefix\fR .RS 4 اگر می‌خواهید پیشوند پیش‌فرض FIFOها (لوله‌های نام‌گذاری‌شده) مورد استفاده برای ارتباط میان Valgrind gdbserver و vgdb را تغییر دهید، باید این گزینه را هم به Valgrind و هم به vgdb بدهید\&. .RE .PP \fB\-\-wait=\fR .RS 4 به vgdb دستور می‌دهد به مدت تعداد ثانیه‌های تعیین‌شده به دنبال Valgrind gdbserverهای در دسترس بگردد\&. این ویژگی امکان اجرای فرایند vgdb را پیش از راه‌اندازی Valgrind gdbserver مورد نظری که قصد ارتباط با آن را دارید فراهم می‌سازد\&. این گزینه در صورت استفاده همراه با یک \fB\-\-vgdb\-prefix\fR یکتا برای فرایندی که می‌خواهید منتظر آن بمانید بسیار سودمند است\&. همچنین اگر از آرگومان \fB\-\-wait\fR در دستور «target remote» در GDB استفاده می‌کنید، باید remotetimeout را در GDB به مقداری بزرگ‌تر از مقدار آرگومان \-\-wait تنظیم کنید\&. برای مثالی از تنظیم مقدار remotetimeout، گزینه \fB\-\-max\-invoke\-ms\fR (در ادامه) را ببینید\&. .RE .PP \fB\-\-max\-invoke\-ms=\fR .RS 4 تعداد میلی‌ثانیه‌هایی را مشخص می‌کند که پس از آن vgdb فراخوانی gdbserver تعبیه‌شده در Valgrind را اجباری می‌کند\&. مقدار پیش‌فرض ۱۰۰ میلی‌ثانیه است\&. مقدار ۰ فراخوانی اجباری را غیرفعال می‌کند\&. فراخوانی اجباری زمانی به کار می‌رود که vgdb به یک Valgrind gdbserver متصل باشد و تمام ریسه‌های (threads) فرایند Valgrind در یک فراخوانی سیستمی (system call) مسدود (blocked) شده باشند\&. .sp اگر مقدار بزرگی تعیین کنید، ممکن است لازم باشد مقدار «remotetimeout» را در GDB از مقدار پیش‌فرض ۲ ثانیه افزایش دهید\&. باید مطمئن شوید که مهلت زمانی (برحسب ثانیه) از مقدار \fB\-\-max\-invoke\-ms\fR بزرگ‌تر باشد\&. برای مثال، برای \fB\-\-max\-invoke\-ms=5000\fR، دستور زیر در GDB مناسب است: .sp .if n \{\ .RS 4 .\} .nf (gdb) set remotetimeout 6 .fi .if n \{\ .RE .\} .sp .RE .PP \fB\-\-cmd\-time\-out=\fR .RS 4 به یک vgdb مستقل دستور می‌دهد در صورتی که Valgrind gdbserver متصل‌شده دستوری را در تعداد ثانیه‌های مشخص‌شده پردازش نکند، خارج شود\&. مقدار پیش‌فرض این است که هرگز منقضی نشود\&. .RE .PP \fB\-\-port=\fR .RS 4 به vgdb دستور می‌دهد به‌جای استفاده از پایپ برای برقراری ارتباط با GDB، از پروتکل tcp/ip استفاده کرده و روی شماره پورت مشخص‌شده منتظر GDB بماند\&. استفاده از tcp/ip امکان اجرای GDB روی یک رایانه و اشکال‌زدایی فرایند Valgrind در حال اجرا روی یک رایانه مقصد دیگر را فراهم می‌کند\&. مثال: .sp .if n \{\ .RS 4 .\} .nf # در رایانه مقصد، برنامه خود را تحت valgrind اجرا کنید با: valgrind \-\-vgdb\-error=0 prog # و سپس در یک پوسته دیگر، اجرا کنید: vgdb \-\-port=1234 .fi .if n \{\ .RE .\} .sp در رایانه‌ای که میزبان GDB است، این دستور را اجرا کنید: .sp .if n \{\ .RS 4 .\} .nf gdb prog (gdb) target remote targetip:1234 .fi .if n \{\ .RE .\} .sp که در آن targetip آدرس IP یا نام میزبان رایانه مقصد است\&. .RE .PP \fB\-\-vgdb\-multi\fR .RS 4 باعث می‌شود vgdb در حالت extended\-remote آغاز شده و منتظر بماند تا gdb برنامه اجرایی را مشخص کند\&. .RE .PP \fB\-\-valgrind\fR .RS 4 مسیر باینری valgrind جهت استفاده در حالت extended\-remote\&. در صورت عدم تعیین، نسخه valgrind سیستمی راه‌اندازی خواهد شد\&. .RE .PP \fB\-\-vargs\fR .RS 4 گزینه‌های اجرای valgrind در حالت extended\-remote؛ به‌عنوان مثال \fB\-q\fR\&. هر آنچه پس از \fB\-\-vargs\fR بیاید، عیناً به‌عنوان آرگومان به valgrind ارسال می‌شود\&. .RE .PP \fB\-c\fR .RS 4 برای ارسال بیش از یک دستور به vgdb مستقل، دستورات را با گزینه \fB\-c\fR از یکدیگر جدا کنید\&. مثال: .sp .if n \{\ .RS 4 .\} .nf vgdb v\&.set log_output \-c leak_check any .fi .if n \{\ .RE .\} .RE .PP \fB\-l\fR .RS 4 به یک vgdb مستقل دستور می‌دهد فهرست فرایندهای در حال اجرای Valgrind gdbserver را گزارش کرده و سپس خارج شود\&. .RE .PP \fB\-T\fR .RS 4 به vgdb دستور می‌دهد به پیام‌های اطلاعاتی vgdb برچسب زمان (timestamp) بیفزاید\&. .RE .PP \fB\-D\fR .RS 4 به یک vgdb مستقل دستور می‌دهد وضعیت حافظه اشتراکی استفاده‌شده توسط Valgrind gdbserver را نمایش دهد\&. vgdb پس از نمایش وضعیت حافظه اشتراکی Valgrind gdbserver خارج خواهد شد\&. .RE .PP \fB\-d\fR .RS 4 به vgdb دستور می‌دهد خروجی اشکال‌زدایی تولید کند\&. برای افزایش جزئیات خروجی، چند بار آرگومان \fB\-d\fR را وارد کنید\&. هنگام ارسال \fB\-d\fR به یک vgdb بازپخش (relay)، بهتر است خروجی خطای استاندارد (stderr) مربوط به vgdb را به یک فایل تغییر مسیر (redirect) دهید تا از تداخل میان خروجی اشکال‌زدایی vgdb و GDB جلوگیری شود\&. .RE .SH "همچنین ببینید (SEE ALSO)" .PP valgrind(1), $INSTALL/share/doc/valgrind/html/index\&.html یا http://www\&.valgrind\&.org/docs/manual/index\&.html, \m[blue]\fBDebugging your program using Valgrind\*(Aqs gdbserver and GDB\fR\m[]\&\s-2\u[1]\d\s+2 \m[blue]\fBvgdb\fR\m[]\&\s-2\u[2]\d\s+2, \m[blue]\fBValgrind monitor commands\fR\m[]\&\s-2\u[3]\d\s+2\&. .SH "نویسنده (AUTHOR)" .PP Philippe Waroquiers\&. .SH "نکات (NOTES)" .IP " 1." 4 Debugging your program using Valgrind's gdbserver and GDB .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver .RE .IP " 2." 4 vgdb .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.vgdb .RE .IP " 3." 4 Valgrind monitor commands .RS 4 \%http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands .RE