.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "BUGPOINT" "1" "2026-07-15" "22" "LLVM" .SH "نام (NAME)" bugpoint \- ابزار خودکار کاهش و کوچک‌سازی موارد آزمون .SH "خلاصه دستور (SYNOPSIS)" .sp \fBbugpoint\fP [\fIoptions\fP] [\fIinput LLVM ll/bc files\fP] [\fILLVM passes\fP] \fB\-\-args\fP \fIprogram arguments\fP .SH "توضیحات (DESCRIPTION)" .sp دستور \fBbugpoint\fP منشأ مشکلات در ابزارها و گذرهای (passes) LLVM را محدود و مشخص می‌کند. از این ابزار می‌توان برای اشکال‌زدایی سه نوع خرابی استفاده کرد: کرش‌های بهینه‌ساز، کامپایل‌های نادرست توسط بهینه‌سازها، یا تولید کد بومی معیوب (شامل مشکلات در کامپایلرهای ایستا و JIT). هدف آن کاهش موارد آزمون بزرگ به موارد کوچک و مفید است. برای اطلاعات بیشتر در مورد طراحی و سازوکار درونی \fBbugpoint\fP و همچنین توصیه‌هایی برای استفاده از آن، به مستندات «طراحی و کاربرد ابزار LLVM bugpoint» \%<> در توزیع LLVM مراجعه کنید. .SH "گزینه‌ها (OPTIONS)" .sp \fB\-\-additional\-so\fP \fIlibrary\fP .INDENT 0.0 .INDENT 3.5 بارگذاری شیء اشتراکی پویا (shared object) با نام \fIlibrary\fP در برنامه آزمون هنگام هر بار اجرای آن. این گزینه زمانی مفید است که برنامه‌هایی وابسته به کتابخانه‌های غیر LLVM (مانند کتابخانه‌های X یا curses) را اشکال‌زدایی می‌کنید. .UNINDENT .UNINDENT .sp \fB\-\-append\-exit\-code\fP=\fI{true,false}\fP .INDENT 0.0 .INDENT 3.5 پیوست کردن کد خروج برنامه آزمون به فایل خروجی، به‌طوری که هرگونه تغییر در کد خروج به منزله شکست آزمون در نظر گرفته شود. مقدار پیش‌فرض false است. .UNINDENT .UNINDENT .sp \fB\-\-args\fP \fIprogram args\fP .INDENT 0.0 .INDENT 3.5 ارسال تمام آرگومان‌های مشخص‌شده پس از \fB\-\-args\fP به برنامه آزمون هنگام اجرای آن. توجه داشته باشید که اگر هر یک از \fIprogram args\fP با «\(dq\fB\-\fP\(dq» آغاز شود، باید به این شکل عمل کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX bugpoint [bugpoint args] \-\-args \-\- [program args] .EE .UNINDENT .UNINDENT .sp عبارت «\(dq\fB\-\-\fP\(dq» بلافاصله پس از گزینه \fB\-\-args\fP به \fBbugpoint\fP اعلام می‌کند که هر گزینه‌ای را که با «\(dq\fB\-\fP\(dq» آغاز می‌شود بخشی از گزینه \fB\-\-args\fP تلقی کند، نه گزینه‌ای برای خود \fBbugpoint\fP. .UNINDENT .UNINDENT .sp \fB\-\-tool\-args\fP \fItool args\fP .INDENT 0.0 .INDENT 3.5 ارسال تمام آرگومان‌های مشخص‌شده پس از \fB\-\-tool\-args\fP به ابزار LLVM تحت آزمون (\fBllc\fP، \fBlli\fP و غیره) در هر بار اجرای آن. باید از این گزینه به شیوه زیر استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX bugpoint [bugpoint args] \-\-tool\-args \-\- [tool args] .EE .UNINDENT .UNINDENT .sp عبارت «\(dq\fB\-\-\fP\(dq» بلافاصله پس از گزینه \fB\-\-tool\-args\fP به \fBbugpoint\fP اعلام می‌کند که هر گزینه‌ای را که با «\(dq\fB\-\fP\(dq» آغاز می‌شود بخشی از گزینه \fB\-\-tool\-args\fP تلقی کند، نه گزینه‌ای برای خود \fBbugpoint\fP (به \fB\-\-args\fP در بالا مراجعه کنید). .UNINDENT .UNINDENT .sp \fB\-\-safe\-tool\-args\fP \fItool args\fP .INDENT 0.0 .INDENT 3.5 ارسال تمام آرگومان‌های مشخص‌شده پس از \fB\-\-safe\-tool\-args\fP به ابزار اجرای «امن» (\(dqsafe\(dq). .UNINDENT .UNINDENT .sp \fB\-\-gcc\-tool\-args\fP \fIgcc tool args\fP .INDENT 0.0 .INDENT 3.5 ارسال تمام آرگومان‌های مشخص‌شده پس از \fB\-\-gcc\-tool\-args\fP به فراخوانی \fBgcc\fP\&. .UNINDENT .UNINDENT .sp \fB\-\-opt\-args\fP \fIopt args\fP .INDENT 0.0 .INDENT 3.5 ارسال تمام آرگومان‌های مشخص‌شده پس از \fB\-\-opt\-args\fP به فراخوانی \fBopt\fP\&. .UNINDENT .UNINDENT .sp \fB\-\-disable\-{dce,simplifycfg}\fP .INDENT 0.0 .INDENT 3.5 عدم اجرای گذرهای مشخص‌شده برای پاک‌سازی و کاهش حجم برنامه آزمون. به‌طور پیش‌فرض، \fBbugpoint\fP در هنگام تلاش برای کوچک‌سازی برنامه‌های آزمون این گذرها را به‌صورت داخلی اجرا می‌کند. اگر سعی در یافتن باگ در یکی از این گذرها داشته باشید، ممکن است \fBbugpoint\fP دچار کرش شود. .UNINDENT .UNINDENT .sp \fB\-\-enable\-valgrind\fP .INDENT 0.0 .INDENT 3.5 استفاده از valgrind برای یافتن خطاها در مرحله بهینه‌سازی. این گزینه به bugpoint امکان می‌دهد مشکلاتی را که ناشی از مدیریت نادرست حافظه بوده و در حالت عادی پنهان هستند، شناسایی کند. .UNINDENT .UNINDENT .sp \fB\-find\-bugs\fP .INDENT 0.0 .INDENT 3.5 ترتیب گذرهای مشخص‌شده را به‌طور مداوم تصادفی‌سازی کرده و روی برنامه آزمون اجرا می‌کند تا زمانی که باگی پیدا شود یا کاربر اجرای \fBbugpoint\fP را متوقف کند. .UNINDENT .UNINDENT .sp \fB\-help\fP .INDENT 0.0 .INDENT 3.5 چاپ خلاصه‌ای از گزینه‌های خط فرمان. .UNINDENT .UNINDENT .sp \fB\-\-input\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 باز کردن \fIfilename\fP و بازهدایت ورودی استاندارد برنامه آزمون به این فایل در هنگام اجرا. .UNINDENT .UNINDENT .sp \fB\-\-load\fP \fIplugin\fP .INDENT 0.0 .INDENT 3.5 بارگذاری شیء پویای \fIplugin\fP در خود \fBbugpoint\fP. این شیء باید گذرهای بهینه‌سازی جدیدی را ثبت کند. پس از بارگذاری، این شیء گزینه‌های خط فرمان جدیدی برای فعال‌سازی بهینه‌سازی‌های گوناگون اضافه خواهد کرد. برای مشاهده فهرست کامل جدید بهینه‌سازی‌ها، گزینه‌های \fB\-help\fP و \fB\-\-load\fP را هم‌زمان به کار ببرید؛ برای مثال: .INDENT 0.0 .INDENT 3.5 .sp .EX bugpoint \-\-load myNewPass.so \-help .EE .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp \fB\-\-mlimit\fP \fImegabytes\fP .INDENT 0.0 .INDENT 3.5 تعیین سقف مصرف حافظه برای بهینه‌سازی و تولید کد. مقدار صفر این محدودیت را غیرفعال می‌کند. .UNINDENT .UNINDENT .sp \fB\-\-output\fP \fIfilename\fP .INDENT 0.0 .INDENT 3.5 هنگامی که برنامه آزمون در جریان خروجی استاندارد خود داده تولید می‌کند، خروجی باید دقیقاً با محتویات \fIfilename\fP («خروجی مرجع» یا \(dqreference output\(dq) همخوانی داشته باشد. اگر از این گزینه استفاده نکنید، \fBbugpoint\fP با کامپایل برنامه از طریق بک‌اند «امن» (\(dqsafe\(dq) و اجرای آن، سعی می‌کند یک خروجی مرجع بسازد. .UNINDENT .UNINDENT .sp \fB\-\-run\-{int,jit,llc,custom}\fP .INDENT 0.0 .INDENT 3.5 هنگام کامپایل برنامه آزمون، \fBbugpoint\fP باید با استفاده از مولد کد مشخص‌شده برای آن کد تولید کند. این گزینه‌ها به شما امکان می‌دهند به ترتیب مفسر، کامپایلر JIT، کامپایلر بومی ایستا یا یک دستور سفارشی (به \fB\-\-exec\-command\fP مراجعه کنید) را انتخاب نمایید. .UNINDENT .UNINDENT .sp \fB\-\-safe\-{llc,custom}\fP .INDENT 0.0 .INDENT 3.5 هنگام اشکال‌زدایی یک مولد کد، \fBbugpoint\fP باید از مولد کد مشخص‌شده به‌عنوان مولد کد «امن» (\(dqsafe\(dq) استفاده کند. این مولد کد مطمئن برای ساخت «خروجی مرجع» (در صورت فراهم نشدن آن) و کامپایل بخش‌هایی از برنامه که از مورد آزمون کنار گذاشته می‌شوند به کار می‌رود. این گزینه‌ها به ترتیب امکان انتخاب کامپایلر بومی ایستا یا یک دستور سفارشی (به \fB\-\-exec\-command\fP مراجعه کنید) را فراهم می‌آورند. در حال حاضر نمی‌توان از بک‌اندهای مفسر و JIT به‌عنوان بک‌اندهای «امن» استفاده کرد. .UNINDENT .UNINDENT .sp \fB\-\-exec\-command\fP \fIcommand\fP .INDENT 0.0 .INDENT 3.5 این گزینه دستوری را مشخص می‌کند که باید همراه با گزینه‌های \fB\-\-run\-custom\fP و \fB\-\-safe\-custom\fP جهت اجرای مورد آزمون بیت‌کد استفاده شود. این قابلیت برای کامپایل متقابل (cross\-compilation) مفید است. .UNINDENT .UNINDENT .sp \fB\-\-compile\-command\fP \fIcommand\fP .INDENT 0.0 .INDENT 3.5 این گزینه دستوری را مشخص می‌کند که باید همراه با گزینه \fB\-\-compile\-custom\fP جهت کامپایل مورد آزمون بیت‌کد استفاده شود. این دستور باید در صورتی که فایل «مورد توجه» (\(dqinteresting\(dq) باشد با یک کد خروج نشان‌دهنده شکست، و در غیر این صورت با کد خروج موفقیت‌آمیز (یعنی 0) خارج شود (مشابه وضعیتی که کامپایلر روی ورودی‌های «مورد توجه» کرش کند). .sp این گزینه برای آزمودن خروجی کامپایلر بدون اجرای مراحل پیوند (link) یا اجرا کاربرد دارد. برای تولید یک آزمون واحد کاهش‌یافته، می‌توانید دستورالعمل‌های CHECK را به مورد آزمون اضافه کرده و نام اسکریپت اجرایی compile\-command را به این شیوه پاس دهید: .INDENT 0.0 .INDENT 3.5 .sp .EX #!/bin/sh llc \(dq$@\(dq not FileCheck [bugpoint input file].ll < bugpoint\-test\-program.s .EE .UNINDENT .UNINDENT .sp این اسکریپت تا زمانی که FileCheck موفق باشد با شکست (\(dqfail\(dq) مواجه می‌شود. در نتیجه خروجی نهایی، کمینه‌ترین بیت‌کدی خواهد بود که FileCheck را با موفقیت می‌گذراند. .UNINDENT .UNINDENT .sp \fB\-\-safe\-path\fP \fIpath\fP .INDENT 0.0 .INDENT 3.5 این گزینه مسیر دستوری را مشخص می‌کند که باید همراه با گزینه \fB\-\-safe\-{int,jit,llc,custom}\fP اجرا شود. .UNINDENT .UNINDENT .sp \fB\-\-verbose\-errors\fP=\fI{true,false}\fP .INDENT 0.0 .INDENT 3.5 رفتار پیش‌فرض bugpoint این است که هنگام یافتن آزمون کاهش‌یافته‌ای که سبب کرش در کامپایل می‌شود، عبارت «\(dq\(dq» را چاپ می‌کند. این پرچم باعث چاپ خروجی برنامه دچار کرش در stderr می‌شود. این قابلیت برای اطمینان از اینکه خطای در حال ردیابی همان خطای مدنظر است و نه خطای متفاوتی که تصادفاً کامپایلر را دچار کرش کرده، مفید است. مقدار پیش‌فرض false است. .UNINDENT .UNINDENT .SH "وضعیت خروج (EXIT STATUS)" .sp اگر \fBbugpoint\fP در پیدا کردن مشکل موفق شود، با کد 0 خارج می‌شود. در غیر این صورت، چنانچه خطایی رخ دهد، با مقداری غیر صفر پایان می‌یابد. .SH "همچنین ببینید (SEE ALSO)" .sp \fBopt(1) \%\fP .SH "نویسندگان (AUTHORS)" .sp توسط تیم LLVM نگهداری می‌شود (https://llvm.org). .SH "کپی‌رایت و تکثیر (COPYRIGHT)" 2003-2026, LLVM Project .\" End of generated man page.