Amazon Best VPN GoSearch

فاویکون OnWorks

valgrind.bin - آنلاین در ابر

valgrind.bin را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور valgrind.bin است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


valgrind - مجموعه ای از ابزارها برای اشکال زدایی و پروفایل کردن برنامه ها

خلاصه


والگریند [گزینه های valgrind] [برنامه شما] [گزینه های برنامه شما]

شرح


والگریند یک برنامه انعطاف پذیر برای اشکال زدایی و پروفایل فایل های اجرایی لینوکس است. شامل می شود
از یک هسته، که یک CPU مصنوعی را در نرم افزار فراهم می کند، و یک سری اشکال زدایی و
ابزارهای پروفایل معماری مدولار است، به طوری که می توان ابزارهای جدید را به راحتی ایجاد کرد
بدون ایجاد اختلال در ساختار موجود.

برخی از گزینه های توضیح داده شده در زیر با تمام ابزارهای Valgrind کار می کنند و برخی فقط با آنها کار می کنند
چند یا یکی بخش MEMCHECK OPTIONS و موارد زیر آن ابزار خاص را توضیح می دهند
گزینه.

این صفحه راهنما فقط استفاده و گزینه های اولیه را پوشش می دهد. برای اطلاعات جامع تر،
لطفاً اسناد HTML سیستم خود را ببینید:
$INSTALL/share/doc/valgrind/html/index.html یا آنلاین:
http://www.valgrind.org/docs/manual/index.html.

TOOL انتخاب OPTIONS


تنها مهمترین گزینه

--ابزار= [پیش‌فرض: memcheck]
ابزار Valgrind را اجرا کنید نام ابزاربه عنوان مثال memcheck، cachegrind، callgrind، helgrind،
drd، massif، lakey، هیچ، exp-sgcheck، exp-bbv، exp-dhat و غیره.

BASIC OPTIONS


این گزینه ها با تمام ابزارها کار می کنند.

-h --کمک
نمایش راهنما برای همه گزینه ها، هم برای هسته و هم برای ابزار انتخاب شده. اگر گزینه
تکرار می شود معادل دادن است -- help-debug.

-- help-debug
مثل --کمک، اما همچنین گزینه های اشکال زدایی را که معمولاً فقط برای آنها کاربرد دارند لیست می کند
توسعه دهندگان Valgrind.

- نسخه
شماره نسخه هسته Valgrind را نشان دهید. ابزارها می توانند نسخه مخصوص به خود را داشته باشند
شماره. طرحی وجود دارد تا اطمینان حاصل شود که ابزارها فقط زمانی اجرا می شوند که هسته اصلی باشد
نسخه ای است که آنها برای کار با آن شناخته شده اند. این کار برای به حداقل رساندن شانس انجام شد
مشکلات عجیب و غریب ناشی از ناسازگاری نسخه ابزار در مقابل هسته.

-q, --ساکت
بی‌صدا اجرا کنید و فقط پیام‌های خطا را چاپ کنید. اگر در حال اجرای رگرسیون هستید مفید است
تست کنید یا ماشین های تست خودکار دیگری داشته باشید.

-v, -- پرحرف
پرحرف تر باش اطلاعات اضافی در مورد جنبه های مختلف برنامه شما می دهد، مانند:
اشیاء مشترک بارگذاری شده، سرکوب های استفاده شده، پیشرفت ابزار دقیق
و موتورهای اعدام و هشدارهایی در مورد رفتار غیرعادی. تکرار گزینه
سطح پرحرفی را افزایش می دهد.

--trace-children= [پیش‌فرض: نه]
هنگامی که فعال شود، Valgrind به فرآیندهای فرعی که از طریق آن آغاز شده اند ردیابی می کند exec سیستم
صدا زدن. این برای برنامه های چند فرآیندی ضروری است.

توجه داشته باشید که والگریند به فرزند a ردیابی می کند چنگال (سخت خواهد بود،
پس از چنگال یک کپی یکسان از یک فرآیند ایجاد می کند)، بنابراین این گزینه احتمالاً بد است
تحت عنوان. با این حال، اکثر کودکان از چنگال تماس می گیرد بلافاصله تماس بگیرید exec به هر حال.

--trace-children-skip=patt1,patt2,...
این گزینه فقط زمانی اثر دارد که --trace-children=بله مشخص شده است. اجازه می دهد
برخی از کودکان باید نادیده گرفته شوند. این گزینه فهرستی از الگوهای جدا شده با کاما را می گیرد
نام فایل های اجرایی فرزند که والگریند نباید آنها را دنبال کند. الگوها ممکن است
متاکاراکترها را شامل می شود؟ و * که به معنای معمول هستند.

این می تواند برای هرس شاخه های غیر جالب از درختی از فرآیندها مفید باشد
روی Valgrind اجرا کنید. اما در استفاده از آن باید مراقب باشید. وقتی والگریند از ردیابی صرف نظر می کند
به یک فایل اجرایی، نه تنها از ردیابی آن فایل اجرایی نمی گذرد، بلکه از آن نیز عبور می کند.
ردیابی هر یک از فرآیندهای فرزند آن فایل اجرایی. به عبارت دیگر، پرچم اینطور نیست
فقط باعث توقف ردیابی در فایل های اجرایی مشخص شده -- از ردیابی آن صرفنظر می کند
کل زیردرخت های فرآیند در هر یک از فایل های اجرایی مشخص شده ریشه دارند.

--trace-children-skip-by-arg=patt1,patt2,...
این همان است --ردیابی-کودکان-پرش، با یک تفاوت: تصمیم به
این که آیا می توان در فرآیند کودک ردیابی کرد یا خیر، با بررسی استدلال ها به کودک انجام می شود
فرآیند، به جای نام فایل اجرایی آن.

--child-silent-after-fork= [پیش‌فرض: نه]
هنگامی که فعال باشد، Valgrind هیچ خروجی اشکال زدایی یا ورود به سیستم را برای کودک نشان نمی دهد
فرآیند ناشی از الف چنگال صدا زدن. این می تواند خروجی را کمتر گیج کننده کند (هر چند
گمراه کننده تر) هنگام برخورد با فرآیندهایی که باعث ایجاد کودکان می شود. به خصوص است
مفید در ارتباط با --trace-children=. استفاده از این گزینه نیز به شدت است
توصیه می شود اگر خروجی XML را درخواست می کنید (--xml=بله، زیرا در غیر این صورت XML از
ممکن است کودک و والدین با هم مخلوط شوند که معمولاً آن را بی فایده می کند.

--vgdb= [پیش‌فرض: آره]
Valgrind زمانی که قابلیت "gdbserver" را ارائه می دهد --vgdb=بله or --vgdb=کامل is
مشخص شده. این به یک دیباگر خارجی GNU GDB اجازه می دهد تا برنامه شما را کنترل و اشکال زدایی کند
وقتی روی Valgrind اجرا می شود. --vgdb=کامل سربار عملکرد قابل توجهی را متحمل می شود، اما
نقاط شکست و نقاط مراقبت دقیق تری را ارائه می دهد. به اشکال زدایی برنامه خود با استفاده از آن مراجعه کنید
gdbserver و GDB Valgrind برای توضیح دقیق.

اگر gdbserver تعبیه شده فعال باشد اما هیچ gdb در حال حاضر استفاده نمی شود، vgdb
ابزار خط فرمان می تواند "فرمان های نظارت" را از یک پوسته به Valgrind ارسال کند. در
هسته Valgrind مجموعه ای از دستورات مانیتور Valgrind را ارائه می دهد. یک ابزار می تواند به صورت اختیاری
دستورات مانیتور مخصوص ابزار را ارائه دهید که در ابزار خاص مستند شده است
فصل.

--vgdb-error= [پیش‌فرض: 999999999]
زمانی که Valgrind gdbserver با فعال است از این گزینه استفاده کنید --vgdb=بله or --vgdb=کامل.
ابزارهایی که خطاها را گزارش می‌کنند، قبل از انجماد منتظر می‌مانند تا خطاهای «تعداد» گزارش شوند
برنامه و منتظر شما برای ارتباط با GDB است. نتیجه این است که مقدار صفر است
باعث می شود که gdbserver قبل از اجرای برنامه شما راه اندازی شود. این هست
معمولاً برای درج نقاط شکست GDB قبل از اجرا استفاده می شود و همچنین با ابزارها کار می کند
که خطاها را گزارش نمی کنند، مانند Massif.

--vgdb-stop-at= [پیش‌فرض: هیچ یک]
زمانی که Valgrind gdbserver با فعال است از این گزینه استفاده کنید --vgdb=بله or --vgdb=کامل.
بعد از هر خطا، gdbserver Valgrind فراخوانی می شود --vgdb-error شده اند
گزارش شده است. علاوه بر این می توانید از سرور gdbserver Valgrind بخواهید که برای موارد دیگر فراخوانی شود
رویدادهایی که به یکی از روش های زیر مشخص می شوند:

· فهرستی از یک یا چند مورد جدا شده با کاما شروع خروج والگریندابکسیت.

ارزش ها شروع خروج والگریندابکسیت به ترتیب نشان می دهد برای فراخوانی gdbserver
قبل از اجرای برنامه شما، بعد از آخرین دستورالعمل برنامه شما، در
خروج غیرعادی Valgrind (به عنوان مثال خطای داخلی، کمبود حافظه، ...).

توجه داشته باشید: شروع و --vgdb-error=0 هر دو باعث فراخوانی Valgrind gdbserver می شوند
قبل از اجرای برنامه شما در --vgdb-error=0 علاوه بر این باعث شما خواهد شد
برنامه ای برای متوقف کردن تمام خطاهای بعدی.

· تمام برای مشخص کردن مجموعه کامل معادل است با
--vgdb-stop-at=راه اندازی،خروج،valgrindabexit.

· هیچ برای مجموعه خالی

--track-fds= [پیش‌فرض: نه]
هنگامی که فعال باشد، Valgrind لیستی از توصیفگرهای فایل باز را در هنگام خروج یا روشن چاپ می کند
از طریق دستور مانیتور gdbserver درخواست کنید v.info open_fds. به همراه هر فایل
توصیفگر یک پشته پشته از جایی که فایل باز شده و هر جزئیاتی چاپ می شود
مربوط به توصیف کننده فایل مانند نام فایل یا جزئیات سوکت.

--time-stamp= [پیش‌فرض: نه]
وقتی فعال است، قبل از هر پیام نشانی از ساعت دیواری سپری شده نشان داده می شود
زمان از زمان راه اندازی، به صورت روز، ساعت، دقیقه، ثانیه و میلی ثانیه بیان می شود.

--log-fd= [پیش‌فرض: 2, stderr]
مشخص می کند که Valgrind باید تمام پیام های خود را به فایل مشخص شده ارسال کند
توصیف کننده پیش فرض، 2، کانال خطای استاندارد (stderr) است. توجه داشته باشید که این ممکن است
با استفاده خود مشتری از stderr تداخل داشته باشد، همانطور که خروجی Valgrind خواهد بود
با هر خروجی ای که کلاینت به stderr می فرستد در هم می آمیزد.

--log-file=
مشخص می کند که Valgrind باید تمام پیام های خود را به فایل مشخص شده ارسال کند. اگر
نام فایل خالی است، باعث سقط می شود. سه فرمت مشخص کننده خاص وجود دارد که
می توان در نام فایل استفاده کرد.

%p با شناسه فرآیند فعلی جایگزین می شود. این برای برنامه ای که بسیار مفید است
فراخوانی چندین فرآیند هشدار: در صورت استفاده از --trace-children=بله و برنامه شما
چندین فرآیند یا فورک برنامه شما را بدون فراخوانی exec پس از آن فراخوانی می کند و
شما از این مشخص کننده (یا از %q مشخص کننده زیر)، خروجی Valgrind از همه
این فرآیندها در یک فایل، احتمالاً بهم ریخته و احتمالاً ناقص، می روند.

%q{FOO} با محتویات متغیر محیطی جایگزین می شود FOO. اگر {FOO}
بخشی بدشکل است، باعث سقط می شود. این مشخص کننده به ندرت مورد نیاز است، اما بسیار
در شرایط خاص (مثلاً هنگام اجرای برنامه های MPI) مفید است. ایده این است که شما
متغیری را مشخص کنید که برای هر فرآیند در کار به طور متفاوت تنظیم شود
به عنوان مثال BPROC_RANK یا هر چیزی که در تنظیم MPI شما قابل اجرا است. اگر به نام
متغیر محیطی تنظیم نشده است، باعث سقط می شود. توجه داشته باشید که در برخی از پوسته ها، {
و } ممکن است لازم باشد شخصیت‌ها با یک اسلش فرار کنند.

%% جایگزین می شود %.

اگر یک % با هر شخصیت دیگری دنبال می شود، باعث سقط می شود.

اگر نام فایل یک نام فایل نسبی را مشخص کند، در حرف اول برنامه قرار می گیرد
پوشه کاری: این دایرکتوری فعلی است که برنامه شروع به کار کرد
اجرا بعد از فورک یا بعد از exec. اگر نام فایل مطلق را مشخص کند (یعنی.
با '/' شروع می شود سپس در آنجا قرار می گیرد.

--log-socket=
مشخص می کند که Valgrind باید همه پیام های خود را به پورت مشخص شده در
آدرس IP مشخص شده ممکن است پورت حذف شده باشد که در این صورت از پورت 1500 استفاده می شود. اگر یک
اتصال به سوکت مشخص شده امکان پذیر نیست، Valgrind دوباره به نوشتن باز می گردد
خروجی به خطای استاندارد (stderr). این گزینه برای استفاده در
در ارتباط با برنامه والگریند-شنونده. برای جزئیات بیشتر، نگاه کنید به
تفسیر در دفترچه راهنما

مرتبط با خطا OPTIONS


این گزینه‌ها توسط همه ابزارهایی که می‌توانند خطاها را گزارش کنند، به عنوان مثال Memcheck استفاده می‌شوند، اما نه
کشگرند.

--xml= [پیش‌فرض: نه]
وقتی فعال باشد، بخش‌های مهم خروجی (مثلاً پیام‌های خطای ابزار) وارد می‌شوند
فرمت XML به جای متن ساده. علاوه بر این، خروجی XML به a ارسال خواهد شد
کانال خروجی متفاوت از خروجی متن ساده بنابراین، شما نیز باید از یکی استفاده کنید
of --xml-fd, فایل --xml or --xml-سوکت برای تعیین محل ارسال XML.

پیام های کمتر مهم همچنان به صورت متن ساده چاپ می شوند، اما به دلیل XML
خروجی و خروجی متن ساده به کانال های خروجی مختلف (مقصد
خروجی متن ساده هنوز توسط کنترل می شود --log-fd, --ورود به سیستم فایل و ---log-socket)
این نباید مشکلی ایجاد کند.

هدف این گزینه آسانتر کردن زندگی ابزارهایی است که خروجی Valgrind را به عنوان مصرف می کنند
ورودی، مانند قسمت های جلویی رابط کاربری گرافیکی. در حال حاضر این گزینه با Memcheck، Helgrind،
DRD و SGcheck. فرمت خروجی در فایل مشخص شده است
docs/internals/xml-output-protocol4.txt در درخت منبع برای Valgrind 3.5.0 یا
بعد.

گزینه های توصیه شده برای عبور یک رابط کاربری گرافیکی، هنگام درخواست خروجی XML، عبارتند از: --xml=بله
برای فعال کردن خروجی XML، فایل --xml برای ارسال خروجی XML به یک (احتمالاً GUI انتخاب شده)
فایل، --ورود به سیستم فایل برای ارسال خروجی متن ساده به فایل دوم انتخاب شده توسط رابط کاربری گرافیکی،
--کودک-سکوت-پس از-چنگال=بلهو -q برای محدود کردن خروجی متن ساده به بحرانی
پیام های خطا ایجاد شده توسط خود Valgrind. به عنوان مثال، عدم خواندن یک مشخص شده
فایل suppressions به عنوان یک پیام خطای حیاتی به حساب می آید. در این راه، برای یک موفق
اجرای فایل خروجی متن خالی خواهد بود. اما اگر خالی نباشد، حاوی خواهد بود
اطلاعات مهمی که کاربر رابط کاربری گرافیکی باید از آن آگاه شود.

--xml-fd= [پیش‌فرض: -1، معلول]
مشخص می کند که Valgrind باید خروجی XML خود را به توصیفگر فایل مشخص شده ارسال کند.
باید همراه با آن استفاده شود --xml=بله.

--xml-file=
مشخص می کند که Valgrind باید خروجی XML خود را به فایل مشخص شده ارسال کند. باید اینگونه باشد
به همراه استفاده می شود --xml=بله. هرکی %p or %q دنباله هایی که در نام فایل ظاهر می شوند
دقیقاً به همان روشی که برای آنها گسترش یافته است --ورود به سیستم فایل. توضیحات را ببینید
of --ورود به سیستم فایل برای جزئیات بیشتر.

--xml-socket=
مشخص می کند که Valgrind باید خروجی XML خود را در پورت مشخص شده در قسمت مشخص شده ارسال کند
آدرس آی پی. باید همراه با آن استفاده شود --xml=بله. شکل استدلال است
همان چیزی است که توسط ---log-socket. توضیحات را ببینید ---log-socket برای ... بیشتر
جزئیات.

--xml-user-comment=
یک رشته نظر اضافی کاربر را در ابتدای خروجی XML تعبیه می کند. فقط زمانی کار می کند که
--xml=بله مشخص شده است؛ در غیر این صورت نادیده گرفته شده است.

--demangle= [پیش‌فرض: آره]
فعال/غیرفعال کردن خودکار جداسازی (رمزگشایی) نام های C++. به طور پیش فرض فعال است. چه زمانی
فعال شود، Valgrind تلاش می کند تا نام های C++ رمزگذاری شده را به چیزی برگرداند
نزدیک شدن به اصل جداکننده نمادهایی را که توسط g++ نسخه 2.X مخدوش شده اند کنترل می کند،
3.X و 4.X.

یک واقعیت مهم در مورد جداسازی این است که نام توابع در سرکوب ذکر شده است
فایل ها باید به صورت مخدوش شده باشند. Valgrind وقتی نام توابع را جدا نمی کند
جستجو برای سرکوب های قابل اجرا، زیرا انجام در غیر این صورت باعث سرکوب می شود
محتویات فایل وابسته به وضعیت ماشین های جداسازی والگریند و همچنین کند است
تطبیق سرکوب پایین

--num-callers= [پیش‌فرض: 12]
حداکثر تعداد ورودی های نشان داده شده در ردیابی پشته که برنامه را شناسایی می کند را مشخص می کند
مکان ها توجه داشته باشید که خطاها فقط با استفاده از چهار مکان عملکرد بالا رایج می شوند
(مکان در تابع فعلی و سه تماس گیرنده فوری آن). پس این
بر تعداد کل خطاهای گزارش شده تأثیری ندارد.

حداکثر مقدار برای این 500 است. توجه داشته باشید که تنظیمات بالاتر باعث می شود Valgrind a را اجرا کند
کمی کندتر است و کمی حافظه بیشتر می گیرد، اما می تواند هنگام کار با آن مفید باشد
برنامه هایی با زنجیره های تماس عمیق تو در تو.

--unw-stack-scan-thresh= [پیش‌فرض: 0] , --unw-stack-scan-frames= [پیش‌فرض:
5]
پشتیبانی از اسکن پشته فقط در اهداف ARM در دسترس است.

این پرچم ها باز شدن پشته را با اسکن پشته فعال و کنترل می کنند. زمانی که عادی است
مکانیسم‌های باز کردن پشته -- استفاده از رکوردهای Dwarf CFI و دنبال کردن نشانگر فریم
-- شکست می خورد، اسکن پشته ممکن است بتواند رد پشته را بازیابی کند.

توجه داشته باشید که اسکن پشته یک مکانیسم غیردقیق و اکتشافی است که ممکن است بسیار مفید باشد
نتایج گمراه کننده، یا اصلاً هیچ. باید فقط در مواقع اضطراری و در مواقع عادی استفاده شود
باز کردن با شکست مواجه می شود، و با این وجود داشتن ردپای پشته مهم است.

اسکن پشته یک تکنیک ساده است: Unwinder کلمات را از پشته می خواند و
سعی می کند حدس بزند که کدام یک از آنها ممکن است آدرس های برگشتی باشند، با بررسی اینکه آیا آنها ممکن است آدرس های بازگشتی باشند
دقیقاً بعد از دستورات تماس ARM یا Thumb اشاره کنید. اگر چنین است، کلمه به آن اضافه می شود
ردیابی.

خطر اصلی زمانی رخ می دهد که یک تابع فراخوانی می شود و آدرس برگشتی خود را ترک می کند
در معرض، و یک تابع جدید فراخوانی می شود، اما تابع جدید، تابع قدیمی را بازنویسی نمی کند
نشانی. نتیجه این است که بک ردیابی ممکن است حاوی ورودی هایی برای توابع باشد
که قبلاً بازگشته اند و بنابراین بسیار گیج کننده هستند.

محدودیت دوم این پیاده سازی این است که فقط صفحه را اسکن می کند (4 کیلوبایت،
به طور معمول) حاوی نشانگر پشته شروع. اگر قاب های پشته بزرگ هستند، این
ممکن است منجر به حضور تعداد کمی (یا حتی عدم وجود) در ردیابی شود. همچنین اگر شما
بدشانس هستند و یک نشانگر پشته اولیه نزدیک به انتهای صفحه حاوی آن، the دارند
اسکن ممکن است تمام فریم های جالب را از دست بدهد.

به طور پیش فرض اسکن پشته غیرفعال است. مورد استفاده معمولی این است که زمانی که الف
ردیابی پشته در غیر این صورت بسیار کوتاه خواهد بود. بنابراین، برای فعال کردن آن، استفاده کنید
--unw-stack-scan-thresh=number. این از Valgrind می خواهد که از اسکن پشته استفاده کند
ردیابی های پشته ای "بسط" که حاوی تعداد فریم های کمتری است.

اگر اسکن پشته انجام شود، حداکثر تعداد فریم ها را ایجاد می کند
توسط --unw-stack-scan-frames مشخص شده است. به طور معمول، اسکن پشته تعداد زیادی تولید می کند
زباله وارد می کند که این مقدار به طور پیش فرض روی مقدار کم (5) تنظیم شده است. در هیچ موردی نخواهد شد
یک رد پشته بزرگتر از مقدار مشخص شده توسط --num-callers ایجاد شود.

--error-limit= [پیش‌فرض: آره]
هنگامی که فعال باشد، Valgrind گزارش خطاها را پس از 10,000,000 در مجموع یا 1,000 متوقف می کند.
مختلف دیده شده است. این برای متوقف کردن دستگاه ردیابی خطا است
تبدیل شدن به یک سربار عملکرد بزرگ در برنامه هایی با خطاهای زیاد.

--error-exitcode= [پیش‌فرض: 0]
یک کد خروجی جایگزین را مشخص می‌کند تا در صورت گزارش Valgrind هر گونه خطا در آن، بازگردد
اجرا کن. وقتی روی مقدار پیش فرض (صفر) تنظیم شود، مقدار بازگشتی از Valgrind همیشه خواهد بود
مقدار بازگشتی فرآیند شبیه سازی شده باشد. وقتی روی یک مقدار غیر صفر تنظیم می شود، که
اگر Valgrind خطایی را تشخیص دهد، به جای آن مقدار برگردانده می شود. این برای استفاده مفید است
Valgrind به عنوان بخشی از مجموعه تست خودکار است، زیرا تشخیص تست را آسان می کند
مواردی که Valgrind خطاهایی را برای آنها گزارش کرده است، فقط با بازرسی کدهای برگشتی.

--error-markers= ، [پیش‌فرض: هیچ یک]
هنگامی که خطاها به صورت متن ساده (یعنی XML استفاده نمی شود)، -- نشانگرهای خطا دستور می دهد تا
خروجی خطی حاوی شروع (پایان) رشته قبل از (بعد) هر خطا.

چنین خطوط نشانگر جستجوی خطاها و/یا استخراج خطاها را در یک آسان می کند
فایل خروجی که حاوی خطاهای valgrind مخلوط با خروجی برنامه است.

توجه داشته باشید که نشانگرهای خالی پذیرفته می شوند. بنابراین، فقط استفاده از نشانگر شروع (یا پایان) است
امکان پذیر است.

--sigill-diagnostics= [پیش‌فرض: آره]
فعال/غیرفعال کردن چاپ عیب‌یابی دستورالعمل غیرقانونی. به طور پیش فرض فعال است، اما
پیش‌فرض غیرفعال است --ساکت داده شده است. پیش فرض همیشه می تواند به صراحت باشد
با دادن این گزینه لغو می شود.

هنگامی که فعال باشد، یک پیام هشدار همراه با برخی از تشخیص ها، هر زمان چاپ می شود
دستورالعملی وجود دارد که Valgrind نمی تواند قبل از رمزگشایی یا ترجمه کند
به برنامه یک سیگنال SIGILL داده می شود. اغلب یک دستورالعمل غیرقانونی نشان دهنده وجود یک اشکال در آن است
برنامه یا پشتیبانی از دست رفته برای دستورالعمل خاص در Valgrind. اما برخی
برنامه ها عمدا سعی می کنند دستورالعملی را اجرا کنند که ممکن است گم شده باشد و به دام بیفتد
سیگنال SIGILL برای شناسایی ویژگی های پردازنده. استفاده از این پرچم این امکان را فراهم می کند
از خروجی تشخیصی که در غیر این صورت در چنین مواردی بدست می آورید اجتناب کنید.

--show-below-main= [پیش‌فرض: نه]
به طور پیش‌فرض، ردیابی‌های پشته‌ای برای خطاها، هیچ توابعی را که در زیر ظاهر می‌شوند نشان نمی‌دهند اصلی
زیرا در بیشتر مواقع چیزهای جالب کتابخانه C و/یا gobbledygook هستند.
متناوبا، اگر اصلی در ردیابی پشته وجود ندارد، ردیابی پشته نشان داده نخواهد شد
هر تابع زیر اصلیتوابع -مانند glibc's __libc_start_main.
به علاوه، اگر اصلیتوابع -مانند در ردیابی وجود دارند، آنها به عنوان عادی می شوند
(در زیر اصلی)، برای اینکه خروجی قطعی تر شود.

اگر این گزینه فعال باشد، تمام ورودی های ردیابی پشته نشان داده می شوند و اصلیمانند
عملکردها عادی نمی شوند.

--fullpath-after= [پیش‌فرض: نکن نشان منبع راه ها]
به طور پیش فرض Valgrind فقط نام فایل ها را در ردیابی پشته نشان می دهد، اما مسیرهای کامل را نشان نمی دهد
فایل های منبع. هنگام استفاده از Valgrind در پروژه های بزرگ که منابع در آن قرار دارند
چندین دایرکتوری مختلف، این می تواند ناخوشایند باشد. --fullpath-after فراهم می کند
راه حل انعطاف پذیر برای این مشکل وقتی این گزینه وجود دارد، مسیر هر کدام
فایل منبع با اخطار بسیار مهم زیر نشان داده شده است: if رشته در یافت می شود
مسیر، سپس مسیر تا و شامل رشته حذف شده است، در غیر این صورت مسیر نشان داده می شود
اصلاح نشده توجه داشته باشید که رشته لازم نیست پیشوند مسیر باشد.

به عنوان مثال، فایلی به نام /home/janedoe/blah/src/foo/bar/xyzzy.c را در نظر بگیرید. مشخص کردن
--fullpath-after=/home/janedoe/blah/src/ باعث می شود Valgrind نام را به عنوان نشان دهد
foo/bar/xyzzy.c.

چون لازم نیست رشته پیشوند باشد، --fullpath-after=src/ تولید خواهد کرد
همان خروجی این زمانی مفید است که مسیر شامل تولید شده توسط ماشین دلخواه باشد
شخصیت ها. به عنوان مثال، مسیر /my/build/dir/C32A1B47/blah/src/foo/xyzzy می تواند باشد
هرس به foo/xyzzy با استفاده از --fullpath-after=/blah/src/.

اگر به سادگی می خواهید مسیر کامل را ببینید، فقط یک رشته خالی را مشخص کنید:
--fullpath-after=. این یک مورد خاص نیست، صرفا یک نتیجه منطقی است
قوانین فوق

در آخر ، می توانید استفاده کنید --fullpath-after چندین بار. هر ظاهری از آن باعث می شود
Valgrind برای تغییر به تولید مسیرهای کامل و اعمال قانون فیلتر بالا. هر یک
مسیر تولید شده با همه مقایسه می شود --fullpath-after-رشته های مشخص شده، در
سفارش مشخص شده اولین رشته ای که مطابقت دارد باعث می شود مسیر به صورت کوتاه شود
در بالا توضیح داده شد. اگر هیچ کدام مطابقت نداشت، مسیر کامل نشان داده می شود. این کار بریدن را تسهیل می کند
پیشوندها زمانی که منابع از تعدادی دایرکتوری نامرتبط گرفته شده اند.

--extra-debuginfo-path= [پیش‌فرض: تعریف نشده و استفاده نشده]
به طور پیش فرض Valgrind در چندین مسیر شناخته شده برای اشیاء اشکال زدایی جستجو می کند، مانند
/usr/lib/debug/.

با این حال، ممکن است سناریوهایی وجود داشته باشد که بخواهید اشیاء اشکال زدایی را در یک قرار دهید
مکان دلخواه، مانند حافظه خارجی هنگام اجرای Valgrind در دستگاه تلفن همراه
با ذخیره سازی محلی محدود مثال دیگر ممکن است موقعیتی باشد که شما ندارید
اجازه نصب بسته های شی اشکال زدایی در سیستمی که در آن اجرا می کنید
والگریند.

در این سناریوها، شما ممکن است یک مسیر مطلق را به عنوان مکان اضافی و نهایی برای آن ارائه دهید
Valgrind برای جستجوی اشیاء اشکال زدایی با مشخص کردن
--extra-debuginfo-path=/path/to/debug/objects. مسیر داده شده به
نام مسیر مطلق شی مورد جستجو. به عنوان مثال، اگر Valgrind به دنبال
اشکال زدایی برای /w/x/y/zz.so و --extra-debuginfo-path=/a/b/c مشخص شده است، خواهد شد
به دنبال یک شی اشکال زدایی در /a/b/c/w/x/y/zz.so بگردید.

این پرچم فقط یک بار باید مشخص شود. اگر چندین بار مشخص شود، فقط
آخرین نمونه افتخار است

--debuginfo-server=ipaddr:port [پیش‌فرض: تعریف نشده و استفاده نشده]
این یک ویژگی جدید، آزمایشی است که در نسخه 3.9.0 معرفی شده است.

در برخی سناریوها ممکن است خواندن اطلاعات اشکال زدایی از اشیاء ذخیره شده در a راحت باشد
ماشین متفاوت با این پرچم، Valgrind یک سرور اشکال‌زدایی در حال اجرا را درخواست می‌کند
ipaddr و گوش دادن در پورت پورت، اگر نتواند شیء اشکال زدایی را در محلی پیدا کند
فایل سیستم

سرور اشکال زدایی باید اتصالات TCP در پورت پورت را بپذیرد. سرور اشکال زدایی است
موجود در فایل منبع auxprogs/valgrind-di-server.c. این فقط از
دایرکتوری که در آن شروع شده است. پورت به طور پیش فرض 1500 در هر دو سرویس گیرنده و سرور if است
مشخص نشده است

اگر Valgrind با استفاده از سرور debuginfo به دنبال debuginfo برای /w/x/y/zz.so بگردد،
اجزای نام مسیر را حذف می کند و فقط zz.so را در سرور درخواست می کند. که در
turn فقط در فهرست کاری فعلی خود به دنبال یک شی اطلاعات اشکال زدایی منطبق خواهد بود.

اطلاعات اشکال زدایی در قطعات کوچک (8 کیلوبایت) طبق درخواست Valgrind منتقل می شود.
هر بلوک با استفاده از LZO برای کاهش زمان انتقال فشرده می شود. اجرا شده است
برای بهترین عملکرد از طریق پیوند شبکه تک مرحله ای 802.11g (WiFi) تنظیم شده است.

توجه داشته باشید که تطبیق اشیاء اولیه و اشکال زدایی را با استفاده از GNU debuglink CRC بررسی می کند
طرح، حتی در هنگام استفاده از سرور اشکال زدایی انجام می شود. برای غیرفعال کردن چنین بررسی،
همچنین باید --allow-mismatched-debuginfo=yes را مشخص کنید.

به طور پیش فرض سیستم ساخت Valgrind valgrind-di-server را برای هدف می سازد
پلتفرم، که تقریباً مطمئناً آن چیزی نیست که شما می خواهید. تا الان نتوانسته ایم
نحوه دریافت automake/autoconf را برای ساخت آن برای پلتفرم ساخت پیدا کنید. اگر بخواهید
برای استفاده از آن، باید با استفاده از دستور نشان داده شده در بالای صفحه، آن را مجدداً کامپایل کنید
auxprogs/valgrind-di-server.c.

--allow-mismatched-debuginfo=no|بله [نه]
هنگام خواندن اطلاعات اشکال زدایی از اشیاء اطلاعات اشکال زدایی جداگانه، Valgrind به طور پیش فرض بررسی می کند
که اشیاء اصلی و اشکال‌زدایی با استفاده از مکانیسم اشکال‌زدایی گنو مطابقت دارند. این
تضمین می کند که اطلاعات اشکال زدایی را از اشیاء دیباجنفوی قدیمی نمی خواند و
همچنین تضمین می کند که Valgrind نمی تواند در نتیجه عدم تطابق تصادف کند.

این بررسی را می توان با استفاده از --allow-mismatched-debuginfo=yes لغو کرد. این ممکن است
زمانی مفید است که اطلاعات اشکال زدایی و اشیاء اصلی به روش مناسب تقسیم نشده باشند. بودن
با این حال، هنگام استفاده از آن مراقب باشید: همه بررسی های سازگاری و Valgrind را غیرفعال می کند
مشاهده شده است که وقتی اشیاء اصلی و اشکال‌زدایی با هم مطابقت ندارند خراب می‌شود.

--سرکوب ها= [پیش‌فرض: $PREFIX/lib/valgrind/default.supp]
یک فایل اضافی را مشخص می کند که از آن توضیحات خطاها برای سرکوب خوانده می شود. شما ممکن است
از 100 فایل سرکوب اضافی استفاده کنید.

--gen-suppressions= [پیش‌فرض: نه]
وقتی روی بله، Valgrind پس از هر خطای نشان داده شده مکث می کند و خط را چاپ می کند:

---- سرکوب چاپ؟ --- [بازگشت/N/n/Y/Y/C/C] ----

فشار دادن دوباره، یا N دوباره or n دوباره، باعث ادامه اجرای Valgrind بدون چاپ a می شود
سرکوب برای این خطا

فشار دادن Y دوباره or y دوباره باعث می شود Valgrind برای این خطا یک suppression بنویسد. تو می توانی
سپس اگر نمی‌خواهید در مورد آن بشنوید، آن را برش داده و در یک فایل suppression قرار دهید
خطا در آینده

وقتی روی تمام, Valgrind برای هر خطای گزارش شده یک suppression چاپ می کند، بدون آن
پرس و جو از کاربر

این گزینه به ویژه برای برنامه های ++C مفید است، زیرا آن را چاپ می کند
سرکوب‌هایی با نام‌های مخدوش، در صورت لزوم.

توجه داشته باشید که سرکوب های چاپ شده تا حد امکان خاص هستند. ممکن است بخواهید مشترک شوید
موارد مشابه را با افزودن حروف عام به نام توابع و با استفاده از سطح فریم افزایش دهید
حروف عام امکانات وحشی قدرتمند و در عین حال منعطف، و با کمی از
با ویرایش دقیق، ممکن است بتوانید یک خانواده کامل از خطاهای مرتبط را سرکوب کنید
فقط چند سرکوب

گاهی اوقات دو خطای مختلف با یک سرکوب یکسان سرکوب می شوند، در این صورت
Valgrind بیش از یک بار سرکوب را خروجی می دهد، اما شما فقط باید یکی داشته باشید
در فایل سرکوب خود کپی کنید (اما داشتن بیش از یک مشکلی ایجاد نمی کند). همچنین،
نام سرکوب به صورت داده شده است ; نام ندارد
واقعا مهم است، آن را فقط با استفاده می شود -v گزینه ای که تمام موارد استفاده شده را چاپ می کند
سوابق.

--input-fd= [پیش‌فرض: 0, stdin]
هنگام استفاده از --gen-suppressions=بله، Valgrind متوقف می شود تا ورودی صفحه کلید را بخواند
از شما زمانی که هر خطا رخ می دهد. به طور پیش فرض از ورودی استاندارد (stdin) می خواند،
که برای برنامه هایی که stdin را می بندند مشکل ساز است. این گزینه به شما امکان می دهد تا مشخص کنید
یک توصیفگر فایل جایگزین که از آن می توان ورودی را خواند.

--dsymutil=no|بله [آره]
این گزینه فقط هنگام اجرای Valgrind در Mac OS X مناسب است.

Mac OS X از طرح پیوند اطلاعات اشکال زدایی معوق (debuginfo) استفاده می کند. وقتی شی
فایل‌های حاوی اطلاعات اشکال‌زدایی به یک .dylib یا یک فایل اجرایی پیوند داده می‌شوند.
در فایل نهایی کپی نشده است. در عوض، اطلاعات اشکال زدایی باید به صورت دستی توسط
اجرای dsymutil، یک ابزار ارائه شده توسط سیستم، بر روی فایل اجرایی یا .dylib. در
اطلاعات ترکیبی حاصل از اشکال زدایی در یک فهرست در کنار فایل اجرایی یا قرار می گیرد
.dylib، اما با پسوند .dSYM.

با --dsymutil=نه، Valgrind مواردی را که دایرکتوری .dSYM یا در آن قرار دارد شناسایی می کند
وجود ندارد، یا وجود دارد، اما به نظر نمی رسد که با فایل اجرایی مرتبط یا مطابقت داشته باشد
.dylib، به احتمال زیاد چون قدیمی است. در این موارد، Valgrind یک را چاپ می کند
پیام اخطار اما اقدام دیگری انجام ندهید.

با --dsymutil=بله، Valgrind در چنین مواردی به طور خودکار dsymutil as را اجرا می کند
برای به روز رسانی اطلاعات اشکال زدایی ضروری است. برای تمام اهداف عملی، اگر همیشه
استفاده کنید --dsymutil=بله، پس هرگز نیازی به اجرای dsymutil به صورت دستی یا جزئی نیست
از سیستم ساخت برنامه های شما، زیرا Valgrind آن را در صورت لزوم اجرا می کند.

Valgrind سعی نخواهد کرد dsymutil را روی هیچ فایل اجرایی یا کتابخانه ای اجرا کند /usr/,
/ صندوقچه /, / sbin /, / انتخاب /، /sw/، /System/، /Library/ یا /Applications/ زیرا dsymutil
همیشه در چنین شرایطی شکست می خورند این هر دو به دلیل اشکال زدایی اطلاعات برای چنین شکست می خورد
اجزای سیستم از پیش نصب شده در هیچ کجا در دسترس نیست، و همچنین به این دلیل
نیاز به امتیازات نوشتن در آن دایرکتوری ها دارد.

هنگام استفاده مراقب باشید --dsymutil=بله، زیرا باعث dSYM. از قبل موجود می شود
دایرکتوری هایی که بی سر و صدا حذف می شوند و دوباره ایجاد می شوند. همچنین توجه داشته باشید که dsymutil کاملاً است
کند، گاهی اوقات بیش از حد.

--max-stackframe= [پیش‌فرض: 2000000]
حداکثر اندازه یک قاب پشته. اگر نشانگر پشته بیش از این مقدار حرکت کند
سپس Valgrind فرض می کند که برنامه در حال تغییر به یک پشته متفاوت است.

اگر برنامه شما دارای آرایه های تخصیص داده شده پشته بزرگ است، ممکن است لازم باشد از این گزینه استفاده کنید.
Valgrind نشانگر پشته برنامه شما را پیگیری می کند. اگر بیش از آن تغییر کند
مقدار آستانه، Valgrind فرض می کند که برنامه شما در حال تغییر به یک پشته متفاوت است، و
رفتار Memcheck متفاوت از تغییر نشانگر پشته کوچکتر از آن است
آستانه. معمولاً این اکتشافی به خوبی کار می کند. با این حال، اگر برنامه شما مقدار زیادی را اختصاص دهد
ساختارهای روی پشته، این اکتشافی فریب خواهد خورد، و Memcheck متعاقبا
تعداد زیادی از دسترسی های پشته نامعتبر را گزارش کنید. این گزینه به شما امکان تغییر
آستانه به مقدار متفاوت

فقط در صورتی باید از این گزینه استفاده کنید که خروجی اشکال زدایی Valgrind شما را به آن راهنمایی کند
این کار را انجام دهید. در این صورت آستانه جدیدی را که باید مشخص کنید به شما می گوید.

به طور کلی، تخصیص ساختارهای بزرگ در پشته ایده بدی است، زیرا می توانید
به راحتی فضای پشته تمام می شود، به خصوص در سیستم هایی با حافظه محدود یا آن
انتظار می رود تعداد زیادی از رشته ها هر کدام با یک پشته کوچک پشتیبانی شوند و همچنین به دلیل
بررسی خطای انجام شده توسط Memcheck برای داده های تخصیص داده شده از پشته موثرتر است
نسبت به داده های تخصیص یافته پشته. اگر مجبور به استفاده از این گزینه هستید، ممکن است بخواهید
بازنویسی کد خود را برای تخصیص در پشته به جای روی پشته در نظر بگیرید.

--main-stacksize= [پیش‌فرض: استفاده کنید جاری "اخر" ارزش]
اندازه پشته نخ اصلی را مشخص می کند.

برای ساده کردن مدیریت حافظه، Valgrind تمام فضای مورد نیاز را برای اصلی ذخیره می کند
پشته نخ در راه اندازی این بدان معناست که باید اندازه پشته مورد نیاز را بداند
راه اندازی

به طور پیش فرض، Valgrind از مقدار فعلی "ulimit" برای اندازه پشته یا 16 مگابایت استفاده می کند.
هر کدام کمتر است در بسیاری از موارد این یک اندازه پشته در محدوده 8 تا 16 مگابایت می دهد.
که برای اکثر برنامه ها تقریبا هرگز سرریز نمی شود.

اگر به اندازه کل پشته بزرگتر نیاز دارید، استفاده کنید --main-stacksize تا آن را مشخص کند. فقط آن را تنظیم کنید
به همان اندازه که نیاز دارید، زیرا فضایی بسیار بیشتر از آنچه نیاز دارید رزرو کرده اید (یعنی صدها
مگابایت بیشتر از نیاز شما) تخصیص دهنده های حافظه Valgrind را محدود می کند و ممکن است
مقدار کل حافظه ای که Valgrind می تواند استفاده کند را کاهش دهید. این فقط واقعا از
اهمیت در ماشین های 32 بیتی

در لینوکس، می‌توانید یک پشته تا 2 گیگابایت درخواست کنید. Valgrind با a متوقف خواهد شد
اگر پشته قابل تخصیص نباشد پیام تشخیصی.

--main-stacksize فقط بر اندازه پشته برای رشته اولیه برنامه تأثیر می گذارد. این دارد
هیچ ارتباطی با اندازه پشته های نخ ندارد، زیرا Valgrind آن ها را تخصیص نمی دهد.

ممکن است لازم باشد از هر دو استفاده کنید --main-stacksize و --max-stackframe با یکدیگر. این است
درک آن مهم است --main-stacksize حداکثر اندازه کل پشته را تنظیم می کند،
در حالی که --max-stackframe بزرگترین اندازه هر قاب پشته ای را مشخص می کند. شما خواهد شد
باید کار کردن --main-stacksize برای خودتان ارزش قائل شوید (معمولاً اگر شما
Segfault های برنامه ها). اما Valgrind موارد مورد نیاز را به شما خواهد گفت --max-stackframe اندازه،
در صورت لزوم

همانطور که در توضیحات بیشتر بحث شد --max-stackframe، لازمه یک بزرگ
پشته نشانه ای از مشکلات بالقوه حمل و نقل است. بهتر است به شما توصیه شود که همه را قرار دهید
داده های بزرگ در حافظه اختصاص داده شده به پشته

--max-threads= [پیش‌فرض: 500]
به طور پیش فرض، Valgrind می تواند تا 500 رشته را مدیریت کند. گاهاً این عدد هم همینطور است
کم اهمیت. از این گزینه برای ارائه یک محدودیت متفاوت استفاده کنید. به عنوان مثال --max-threads=3000.

MALLOC()-RELATED OPTIONS


برای ابزارهایی که از نسخه خود malloc استفاده می کنند (مانند Memcheck، Massif، Helgrind، DRD)،
گزینه های زیر اعمال می شود.

-- تراز = [پیش‌فرض: 8 or شماره ۱۰۲۹، بستگی دارد on la سکو]
به طور پیش فرض Valgrind's از malloc, تخصیص مجددو غیره، بلوکی را که آدرس شروع آن است برمی گرداند
تراز 8 بایت یا تراز 16 بایت (مقدار بستگی به پلت فرم دارد و مطابق با
پیش فرض پلت فرم). این گزینه به شما اجازه می دهد تا یک تراز متفاوت را مشخص کنید. در
مقدار عرضه شده باید بزرگتر یا مساوی با پیش فرض، کمتر یا مساوی باشد
4096 و باید توان دو باشد.

--redzone-size= [پیش‌فرض: بستگی دارد on la ابزار]
والگریند مالوک، تخصیص مجدد، و غیره، بلوک های padding را قبل و بعد از هر بلوک پشته اضافه کنید
توسط برنامه در حال اجرا تخصیص داده می شود. به چنین بلوک‌های بالشتکی، Redzones می‌گویند. در
مقدار پیش فرض برای اندازه redzone به ابزار بستگی دارد. به عنوان مثال، Memcheck اضافه می کند و
حداقل 16 بایت قبل و بعد از هر بلوک اختصاص داده شده توسط مشتری محافظت می کند.
این به آن اجازه می‌دهد تا 16 بایت زیر بار یا بیش از حد بلوک را تشخیص دهد.

افزایش اندازه Redzone امکان تشخیص گذر از فواصل بزرگتر را فراهم می کند.
اما مقدار حافظه استفاده شده توسط Valgrind را افزایش می دهد. کاهش اندازه redzone خواهد بود
حافظه مورد نیاز Valgrind را کاهش می دهد، اما شانس تشخیص را نیز کاهش می دهد
بیش از حد/زیاد اجرا می شود، بنابراین توصیه نمی شود.

غیر معمول OPTIONS


این گزینه‌ها برای همه ابزارها اعمال می‌شوند، زیرا بر عملکردهای مبهم Valgrind تأثیر می‌گذارند
هسته. اکثر مردم نیازی به استفاده از آنها نخواهند داشت.

--smc-check= [پیش‌فرض: تماما غیر فایلی برای x86/amd64/s390x،
پشته برای دیگر طاق ها]
این گزینه تشخیص کدهای خودتغییر شونده توسط Valgrind را کنترل می کند. اگر هیچ بررسی وجود ندارد
انجام می شود، زمانی که یک برنامه مقداری کد را اجرا می کند، سپس آن را با کد جدید بازنویسی می کند، و
کد جدید را اجرا می کند، Valgrind به اجرای ترجمه هایی که برای آنها ساخته است ادامه می دهد
کد قدیمی این احتمالاً منجر به رفتار نادرست و/یا خرابی می شود.

برای معماری های "مدرن" -- هر چیزی که x86، amd64 یا s390x نیست -- پیش فرض
is پشته. این به این دلیل است که یک برنامه صحیح باید اقدامی صریح برای ایجاد مجدد انجام دهد
انسجام کش DI به دنبال اصلاح کد. والگریند چنین مواردی را مشاهده و ارج می نهد
اقدامات، در نتیجه کدهای خودتغییر شونده به طور شفاف با صفر مدیریت می شوند
هزینه اضافی.

برای x86، amd64 و s390x، برنامه نیازی به اطلاع رسانی سخت افزاری ندارد.
همگام سازی انسجام DI مورد نیاز است. از این رو پیش فرض است تماما غیر فایلی، که پوشش می دهد
حالت عادی تولید کد در یک ناحیه mmap'd ناشناس (بدون پشتوانه فایل).

معانی چهار تنظیمات موجود به شرح زیر است. بدون تشخیص (هیچ),
کدهای خودتغییر شونده را روی پشته (که توسط GCC برای پیاده سازی تودرتو استفاده می شود) شناسایی کنید
کارکرد) (پشته، کدهای خودتغییر شونده را در همه جا شناسایی کنید (تمام) و تشخیص دهید
کد خودتغییر شونده در همه جا به جز در نگاشت های پشتیبان فایل (تماما غیر فایلی).

در حال دویدن با تمام سرعت Valgrind را به طور قابل توجهی کاهش می دهد. دویدن با هیچ به ندرت خواهد شد
سرعت کار را افزایش دهید، زیرا کد بسیار کمی به صورت پویا در اکثر برنامه ها تولید می شود.
La VALGRIND_DISCARD_TRANSLATIONS درخواست مشتری جایگزینی برای --smc-check=all
و --smc-check=همه-غیر فایل که به تلاش بیشتر برنامه نویس نیاز دارد اما به Valgrind اجازه می دهد
تا برنامه خود را سریعتر اجرا کنید، با گفتن دقیق زمانی که باید ترجمه انجام شود
دوباره ساخته شده

--smc-check=همه-غیر فایل یک نسخه ارزان تر اما محدودتر را ارائه می دهد
--smc-check=all. به هر ترجمه ای که منشا آن نیست، چک می افزاید
نگاشت حافظه با پشتوانه فایل برنامه های معمولی که کد تولید می کنند، به عنوان مثال JIT
در مرورگرهای وب، کد را در مناطق mmaped ناشناس تولید کنید، در حالی که کد "ثابت" است
مرورگر همیشه در نقشه‌برداری‌های مبتنی بر فایل زندگی می‌کند. --smc-check=همه-غیر فایل طول می کشد
مزیت این مشاهده، محدود کردن سربار بررسی به کد است
احتمالا JIT تولید می شود.

--read-inline-info= [پیش‌فرض: دیدن زیر]
هنگامی که فعال باشد، Valgrind اطلاعات مربوط به فراخوانی تابع درون خطی را از DWARF3 می خواند
اطلاعات اشکال زدایی این کار راه اندازی Valgrind را کند می کند و باعث می شود از حافظه بیشتری استفاده کند (معمولاً برای
هر قطعه کد خطی، 6 کلمه و فاصله برای نام تابع)، اما نتیجه می شود
در stacktraces توصیفی تر. برای نسخه 3.10.0، این قابلیت فعال است
به طور پیش فرض فقط برای اهداف لینوکس، اندروید و سولاریس و فقط برای ابزارها
Memcheck، Helgrind و DRD. در اینجا نمونه ای از چند stacktrace با
--read-inline-info=نه:

==15380== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15380== در 0x80484EA: اصلی (inlinfo.c:6)
==15380==
==15380== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15380== در 0x8048550: fun_noninline (inlinfo.c:6)
==15380== توسط 0x804850E: اصلی (inlinfo.c:34)
==15380==
==15380== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15380== در 0x8048520: اصلی (inlinfo.c:6)

و در اینجا همان خطاها با --read-inline-info=بله:

==15377== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15377== در 0x80484EA: fun_d (inlinfo.c:6)
==15377== توسط 0x80484EA: fun_c (inlinfo.c:14)
==15377== توسط 0x80484EA: fun_b (inlinfo.c:20)
==15377== توسط 0x80484EA: fun_a (inlinfo.c:26)
==15377== توسط 0x80484EA: اصلی (inlinfo.c:33)
==15377==
==15377== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15377== در 0x8048550: fun_d (inlinfo.c:6)
==15377== توسط 0x8048550: fun_noninline (inlinfo.c:41)
==15377== توسط 0x804850E: اصلی (inlinfo.c:34)
==15377==
==15377== پرش یا حرکت مشروط به مقدار(های) اولیه بستگی دارد
==15377== در 0x8048520: fun_d (inlinfo.c:6)
==15377== توسط 0x8048520: اصلی (inlinfo.c:35)

--read-var-info= [پیش‌فرض: نه]
وقتی فعال باشد، Valgrind اطلاعات مربوط به انواع و مکان‌های متغیر را از آن می‌خواند
اطلاعات اشکال زدایی DWARF3. این امر استارتاپ Valgrind را به طور قابل توجهی کند می کند و باعث استفاده از آن می شود
حافظه به طور قابل توجهی بیشتر است، اما برای ابزارهایی که می توانند از آن بهره ببرند (Memcheck،
Helgrind، DRD) می تواند منجر به پیام های خطای دقیق تری شود. به عنوان مثال، اینجا هستند
برخی از خطاهای استاندارد صادر شده توسط Memcheck:

==15363== بایت(های) اولیه در طول درخواست بررسی مشتری پیدا شد
==15363== در 0x80484A9: کرک (varinfo1.c:28)
==15363== توسط 0x8048544: اصلی (varinfo1.c:55)
==15363== آدرس 0x80497f7 7 بایت در نماد داده "global_i2" است
==15363==
==15363== بایت(های) اولیه در طول درخواست بررسی مشتری پیدا شد
==15363== در 0x80484A9: کرک (varinfo1.c:28)
==15363== توسط 0x8048550: اصلی (varinfo1.c:56)
==15363== آدرس 0xbea0d0cc در پشته رشته 1 است
==15363== در فریم شماره 1، ایجاد شده توسط main (varinfo1.c:45)

و در اینجا همان خطاها با --read-var-info=بله:

==15370== بایت(های) اولیه در طول درخواست بررسی مشتری پیدا شد
==15370== در 0x80484A9: کرک (varinfo1.c:28)
==15370== توسط 0x8048544: اصلی (varinfo1.c:55)
==15370== مکان 0x80497f7 0 بایت در global_i2 است[7]،
==15370== یک متغیر جهانی اعلام شده در varinfo1.c:41
==15370==
==15370== بایت(های) اولیه در طول درخواست بررسی مشتری پیدا شد
==15370== در 0x80484A9: کرک (varinfo1.c:28)
==15370== توسط 0x8048550: اصلی (varinfo1.c:56)
==15370== مکان 0xbeb4a0cc 0 بایت در داخل var local "local" است
==15370== اعلام شده در varinfo1.c:46، در فریم شماره 1 از موضوع 1

--vgdb-poll= [پیش‌فرض: 5000]
به عنوان بخشی از حلقه اصلی خود، زمان‌بندی Valgrind برای بررسی اینکه آیا فعالیتی انجام می‌شود نظرسنجی می‌کند
(مانند یک فرمان خارجی یا برخی از ورودی های یک gdb) باید توسط gdbserver مدیریت شود.
این نظرسنجی فعالیت پس از اجرای تعداد مشخص شده بلوک اصلی (یا
کمی بیشتر از تعداد مشخص شده بلوک های اصلی). این نظرسنجی بسیار ارزان است بنابراین
مقدار پیش فرض نسبتاً پایین تنظیم شده است. اگر vgdb باشد، ممکن است این مقدار را کاهش دهید
نمی‌توان از فراخوانی سیستم ptrace برای قطع Valgrind استفاده کرد اگر همه رشته‌ها (بیشتر موارد
زمان) در یک تماس سیستمی مسدود شده است.

--vgdb-shadow-registers=no|بله [پیش‌فرض: نه]
هنگامی که فعال می شود، gdbserver ثبات های سایه Valgrind را در GDB قرار می دهد. با این،
مقدار ثبات های سایه Valgrind را می توان با استفاده از GDB بررسی یا تغییر داد.
ثبت‌های سایه در معرض نمایش فقط با نسخه 7.1 یا بالاتر GDB کار می‌کند.

--vgdb-prefix= [پیش‌فرض: /tmp/vgdb-pipe]
برای برقراری ارتباط با gdb/vgdb، gdbserver Valgrind 3 فایل (2 فایل به نام FIFO) ایجاد می کند.
و یک فایل حافظه مشترک mmap). گزینه پیشوند دایرکتوری و پیشوند را کنترل می کند
برای ایجاد این فایل ها

--run-libc-freeres= [پیش‌فرض: آره]
این گزینه فقط در هنگام اجرای Valgrind در لینوکس مناسب است.

کتابخانه گنو سی (libc.so) که توسط همه برنامه ها استفاده می شود، ممکن است حافظه را برای
کاربردهای خودش را دارد. معمولاً وقتی برنامه تمام می شود، آزاد کردن آن حافظه به دردسر نمی خورد-
هیچ فایده ای وجود ندارد، زیرا هسته لینوکس تمام منابع فرآیند را پس می گیرد
فرآیند به هر حال خارج می شود، بنابراین فقط سرعت کار را کاهش می دهد.

نویسندگان glibc متوجه شدند که این رفتار باعث بررسی کننده های نشت مانند Valgrind،
برای گزارش نادرست نشت در glibc، زمانی که بررسی نشت در هنگام خروج انجام می شود. به منظور اجتناب از
این، آنها یک روال به نام ارائه کردند __libc_freeres به طور خاص برای انتشار glibc
تمام حافظه ای که اختصاص داده است. بنابراین Memcheck سعی می کند اجرا شود __libc_freeres در خروجی

متأسفانه، در برخی از نسخه های بسیار قدیمی glibc، __libc_freeres به اندازه کافی است
باگی برای ایجاد خطاهای تقسیم بندی. این به ویژه در Red Hat 7.1 قابل توجه بود.
بنابراین این گزینه به منظور جلوگیری از اجرا ارائه شده است __libc_freeresاست. اگر شما
به نظر می رسد که برنامه در Valgrind به خوبی اجرا می شود، اما خطاهای segfault در هنگام خروج، ممکن است متوجه آن شوید
--run-libc-freeres=نه آن را برطرف می کند، هرچند به قیمت گزارش احتمالی نادرست
نشت فضا در libc.so

--sim-hints=hint1,hint2,...
نکات متفرقه را به Valgrind ارسال کنید که رفتار شبیه سازی شده را کمی تغییر می دهد
راه های غیر استاندارد یا خطرناک، احتمالا برای کمک به شبیه سازی ویژگی های عجیب و غریب. توسط
به طور پیش فرض هیچ راهنمایی فعال نیست. با احتیاط استفاده کنید! نکات شناخته شده در حال حاضر عبارتند از:

· lax-ioctls: در مورد دست زدن به ioctl بسیار سست باشید. تنها فرض این است که اندازه
درست است. در هنگام نوشتن نیازی به مقداردهی اولیه بافر کامل نیست.
بدون این، استفاده از برخی از درایورهای دستگاه با تعداد زیادی ioctl عجیب و غریب
دستورات بسیار خسته کننده می شود.

· سازگار با فیوز: برای تماس‌های سیستمی خاصی که ممکن است مسدود شوند، مدیریت ویژه را فعال کنید
در یک سیستم فایل FUSE این ممکن است هنگام اجرای Valgrind روی a ضروری باشد
برنامه چند رشته ای که از یک رشته برای مدیریت یک سیستم فایل FUSE و
یک رشته دیگر برای دسترسی به آن فایل سیستم.

· فعال - بیرونی: برخی از جادوهای ویژه مورد نیاز هنگام اجرای برنامه را فعال کنید
خود والگریند.

· بدون پیشوند داخلی: غیرفعال کردن چاپ پیشوند > جلوی هر stdout یا stderr
خط خروجی در والگریند داخلی که توسط والگریند بیرونی اداره می شود. این مفید است
هنگام اجرای آزمایش‌های رگرسیون Valgrind در تنظیمات بیرونی/درونی. توجه داشته باشید که
پیشوند > همیشه در جلوی خطوط ثبت اشکال زدایی داخلی چاپ می شود.

· no-nptl-pthread-stackcache: این راهنمایی تنها زمانی مرتبط است که Valgrind را بر روی آن اجرا کنید
لینوکس است.

کتابخانه گنو glibc pthread (libpthread.so) که توسط برنامه های pthread استفاده می شود،
یک حافظه پنهان از پشته های pthread را حفظ می کند. هنگامی که یک thread خاتمه می یابد، حافظه مورد استفاده قرار می گیرد
برای پشته pthread و برخی از موضوعات مربوط به ذخیره سازی محلی ساختار داده ها نیست
همیشه به طور مستقیم آزاد می شود. این حافظه در حافظه پنهان (تا اندازه معین) نگهداری می شود.
و در صورت شروع یک رشته جدید مجددا استفاده می شود.

این کش باعث می شود که ابزار helgrind برخی از شرایط مسابقه مثبت کاذب را گزارش کند
خطاهای موجود در این حافظه کش، زیرا helgrind glibc داخلی را درک نمی کند
همگام سازی کش اولیه بنابراین، هنگام استفاده از helgrind، کش را غیرفعال کنید
به جلوگیری از شرایط مسابقه مثبت کاذب، به ویژه هنگام استفاده از نخ کمک می کند
متغیرهای ذخیره سازی محلی (مثلاً متغیرهایی با استفاده از __نخ واجد شرایط).

هنگام استفاده از ابزار memcheck، غیرفعال کردن حافظه پنهان حافظه مورد استفاده توسط glibc را تضمین می کند
برای رسیدگی به متغیرهای __thread مستقیماً با پایان یک رشته آزاد می شود.

توجه: Valgrind کش را با استفاده از دانش داخلی پشته glibc غیرفعال می کند
پیاده سازی کش و با بررسی اطلاعات اشکال زدایی pthread
کتابخانه بنابراین این تکنیک تا حدودی شکننده است و ممکن است برای همه glibc ها کار نکند
نسخه ها این با نسخه های مختلف glibc با موفقیت آزمایش شده است (به عنوان مثال
2.11، 2.16، 2.18) در سیستم عامل های مختلف.

· درب های شل: (فقط سولاریس) در مورد جابجایی سیکل درب بسیار سهل انگاری کنید
توصیف کننده فایل درب ناشناخته آیا بافر کامل نیاز ندارد
هنگام نوشتن مقدار دهی اولیه می شود. بدون این، برنامه ها با استفاده از دربعملکرد (3LIB).
با معناشناسی کاملاً اختصاصی ممکن است تعداد زیادی از موارد مثبت کاذب گزارش شود.

--fair-sched= [پیش‌فرض: نه]
La -- منصفانه برنامه ریزی شده گزینه مکانیسم قفل مورد استفاده توسط Valgrind برای سریال سازی را کنترل می کند
اجرای thread مکانیسم قفل، نحوه برنامه ریزی نخ ها را کنترل می کند،
و تنظیمات مختلف، مبادلات متفاوتی بین انصاف و عملکرد ایجاد می کند. برای
جزئیات بیشتر در مورد طرح سریال سازی نخ Valgrind و تأثیر آن بر
زمان‌بندی عملکرد و موضوع، به برنامه‌ریزی و عملکرد چند رشته‌ای مراجعه کنید.

· ارزش --fair-sched=بله یک زمانبندی منصفانه را فعال می کند. به طور خلاصه، اگر متعدد است
نخ ها آماده اجرا هستند، نخ ها به صورت گرد برنامه ریزی می شوند.
این مکانیسم در همه پلتفرم ها یا نسخه های لینوکس در دسترس نیست. اگر نه
موجود، با استفاده از --fair-sched=بله باعث می شود Valgrind با یک خطا خاتمه یابد.

اگر در حال اجرا هستید، ممکن است متوجه شوید که این تنظیم پاسخگویی کلی را بهبود می بخشد
برنامه چند رشته ای تعاملی، به عنوان مثال یک مرورگر وب، در Valgrind.

· ارزش --fair-sched=تلاش کنید برنامه ریزی منصفانه را در صورت موجود بودن در پلت فرم فعال می کند.
در غیر این صورت، به طور خودکار به عقب برمی گردد --fair-sched=نه.

· ارزش --fair-sched=نه زمانبندی را فعال می کند که انصاف را تضمین نمی کند
بین رشته هایی که آماده اجرا هستند، اما به طور کلی بالاترین عملکرد را دارند.

--kernel-variant=variant1,variant2,...
کنترل فراخوانی های سیستم و ioctl های ناشی از انواع جزئی هسته پیش فرض برای
این پلت فرم این برای اجرا بر روی هسته های هک شده یا با ماژول های هسته مفید است
که برای مثال ioctl های غیر استاندارد را پشتیبانی می کنند. با احتیاط استفاده کنید. اگر این کار را نکنید
درک کنید که این گزینه چه کاری انجام می دهد، پس مطمئناً به آن نیاز ندارید. در حال حاضر
انواع شناخته شده عبارتند از:

· bproc: حمایت کنید sys_broc تماس سیستمی در x86. این برای اجرا در BProc است،
که یک نوع کوچک از لینوکس استاندارد است که گاهی اوقات برای ساختن استفاده می شود
خوشه ها

· android-no-hw-tls: برخی از نسخه های شبیه ساز اندروید برای ARM a
سخت افزار TLS (حالت محلی) ثبت می شود و Valgrind در هنگام راه اندازی از کار می افتد. استفاده کنید
این نوع برای انتخاب پشتیبانی نرم افزار برای TLS.

· android-gpu-sgx5xx: از این برای پشتیبانی از مدیریت ioctls اختصاصی برای
پردازنده های گرافیکی سری PowerVR SGX 5XX در دستگاه های اندرویدی. شکست در انتخاب این نیست
مشکلات پایداری ایجاد می کند، اما ممکن است باعث شود Memcheck خطاهای نادرست را پس از آن گزارش کند
برنامه ioctl های مخصوص GPU را انجام می دهد.

· android-gpu-adreno3xx: به طور مشابه، از این برای پشتیبانی از مدیریت اختصاصی استفاده کنید
ioctls برای پردازنده های گرافیکی سری Qualcomm Adreno 3XX در دستگاه های اندرویدی.

--merge-recursive-frames= [پیش‌فرض: 0]
برخی از الگوریتم های بازگشتی، برای مثال پیاده سازی درخت دودویی متعادل، ایجاد می کنند
بسیاری از ردیابی‌های پشته‌ای مختلف، که هر کدام شامل چرخه‌هایی از تماس‌ها هستند. یک چرخه به این صورت تعریف می شود
دو مقدار شمارنده برنامه یکسان که با صفر یا چند شمارنده برنامه دیگر از هم جدا شده اند
ارزش های. سپس Valgrind ممکن است از حافظه زیادی برای ذخیره تمام این ردیابی های پشته استفاده کند. این هست
استفاده ضعیف از حافظه با توجه به اینکه چنین ردیابی های پشته ای حاوی موارد مکرر غیر جالب هستند
تماس های بازگشتی به جای اطلاعات جالب تر مانند تابعی که دارد
تماس بازگشتی را آغاز کرد.

گزینه --merge-recursive-frames= به Valgrind دستور می دهد تا شناسایی و ادغام شود
چرخه های تماس بازگشتی با اندازه تا قاب ها وقتی چنین چرخه ای است
شناسایی شده، Valgrind چرخه را در ردیابی پشته به عنوان یک شمارنده برنامه منحصر به فرد ثبت می کند.

مقدار 0 (پیش‌فرض) باعث ادغام تماس بازگشتی نمی‌شود. مقدار 1 باعث می شود
پشته‌ای از الگوریتم‌های بازگشتی ساده (به عنوان مثال، اجرای فاکتوریل)
فرو ریختن معمولاً برای جمع کردن آثار پشته تولید شده به مقدار 2 نیاز است
توسط الگوریتم های بازگشتی مانند درختان باینری، مرتب سازی سریع و غیره. مقادیر بالاتر ممکن است
برای الگوریتم های بازگشتی پیچیده تر مورد نیاز است.

توجه: تماس های بازگشتی با تجزیه و تحلیل مقادیر شمارنده برنامه شناسایی می شوند. آنها نیستند
با مشاهده نام توابع شناسایی می شود.

--num-transtab-sectors= [پیش‌فرض: 6 برای آندروید بستر، زمینه، 16 برای تمام دیگران]
Valgrind کد ماشین برنامه شما را در قطعات کوچک ترجمه و ابزار می کند
(بلوک های اساسی). ترجمه ها در حافظه پنهان ترجمه که تقسیم شده است ذخیره می شوند
به تعدادی بخش (بخش). اگر کش پر است، بخش حاوی
قدیمی‌ترین ترجمه‌ها خالی شده و دوباره استفاده می‌شود. اگر دوباره به این ترجمه های قدیمی نیاز باشد،
Valgrind باید کد ماشین مربوطه را مجدداً ترجمه و ابزارسازی کند
گران. اگر مجموعه کاری "دستورالعمل های اجرا شده" یک برنامه بزرگ باشد، افزایش می یابد
تعداد بخش ها ممکن است با کاهش تعداد بخش ها عملکرد را بهبود بخشد
نیاز به ترجمه مجدد بخش ها بر اساس تقاضا تخصیص می یابد. پس از تخصیص، یک بخش می تواند
هرگز آزاد نمی شود و بسته به ابزار و ارزش، فضای قابل توجهی را اشغال می کند
of --avg-transtab-entry-size (حدود 40 مگابایت در هر بخش برای Memcheck). از گزینه استفاده کنید
--stats=بله برای به دست آوردن اطلاعات دقیق در مورد حافظه استفاده شده توسط یک بخش و
تخصیص و بازیافت بخش ها

--avg-transtab-entry-size= [پیش‌فرض: 0, معنی استفاده کنید ابزار ارائه پیش فرض]
اندازه متوسط ​​بلوک اصلی ترجمه شده. این اندازه متوسط ​​برای ابعاد استفاده می شود
اندازه یک بخش هر ابزار یک مقدار پیش فرض را برای استفاده فراهم می کند. اگر این مقدار پیش فرض
خیلی کوچک است، بخش های ترجمه خیلی سریع پر می شوند. اگر این پیش فرض
مقدار بسیار بزرگ است، بخش قابل توجهی از حافظه بخش ترجمه استفاده نمی شود.
توجه داشته باشید که اندازه متوسط ​​ترجمه بلوک اصلی به ابزار و ممکن بستگی دارد
به گزینه های ابزار بستگی دارد مثلا گزینه memcheck --track-origins=بله را افزایش می دهد
اندازه ترجمه های بلوک اصلی استفاده کنید --avg-transtab-entry-size برای کوک کردن
اندازه بخش ها، یا برای به دست آوردن حافظه یا برای جلوگیری از ترجمه مجدد بیش از حد.

--aspace-minaddr= [پیش‌فرض: بستگی دارد on la سکو]
برای جلوگیری از درگیری های احتمالی با برخی از کتابخانه های سیستم، Valgrind از آن استفاده نمی کند
فضای آدرس زیر --aspace-minaddr ارزش، نگهداری آن در صورت وجود کتابخانه
به طور خاص حافظه را در این منطقه درخواست می کند. بنابراین، مقداری "بدبینانه" حدس زده می شود
توسط Valgrind بسته به پلت فرم. در لینوکس، به طور پیش فرض، Valgrind از استفاده از آن اجتناب می کند
64 مگابایت اول حتی اگر به طور معمول هیچ تضادی در این منطقه کامل وجود نداشته باشد. شما می توانید استفاده کنید
گزینه --aspace-minaddr برای داشتن حافظه گرسنه برنامه خود را از بهره مندی
بیشتر از این حافظه کمتر. از سوی دیگر، اگر با درگیری مواجه شوید، افزایش می یابد
مقدار aspace-minaddr ممکن است آن را حل کند. درگیری ها معمولاً خود را با
خرابی mmap در محدوده پایین فضای آدرس. آدرس ارائه شده باید صفحه باشد
تراز شده و باید برابر یا بزرگتر با 0x1000 (4KB) باشد. برای پیدا کردن مقدار پیش فرض در خود
پلت فرم، کاری مانند valgrind -d -d date 2>&1 | grep -i minaddr. ارزش های
کمتر از 0x10000 (64KB) برای ایجاد مشکلات در برخی از توزیع ها شناخته شده است.

--valgrind-stacksize= [پیش‌فرض: 1 مگابایت]
برای هر رشته، Valgrind به پشته "خصوصی" خود نیاز دارد. اندازه پیش فرض برای اینها
پشته ها تا حد زیادی ابعاد دارند و بنابراین در بیشتر موارد باید کافی باشد. در صورتی که
اندازه خیلی کوچک است، Valgrind خطا می کند. قبل از Segfaulting، ممکن است یک هشدار باشد
تولید شده توسط Valgrind هنگام نزدیک شدن به حد مجاز.

از گزینه استفاده کنید --valgrind-stacksize اگر چنین هشداری (بعید) تولید شود، یا
Valgrind به دلیل نقض تقسیم بندی می میرد. این گونه تخلفات تقسیم بندی شده است
هنگام جدا کردن نمادهای بزرگ C++ دیده می شود.

اگر برنامه شما از رشته های زیادی استفاده می کند و به حافظه زیادی نیاز دارد، می توانید مقداری به دست آورید
حافظه با کاهش اندازه این پشته های Valgrind با استفاده از گزینه
--valgrind-stacksize.

--show-emwarns= [پیش‌فرض: نه]
هنگامی که فعال باشد، Valgrind در موارد خاص هشدارهایی در مورد شبیه سازی CPU خود منتشر می کند.
اینها معمولاً جالب نیستند.

--require-text-symbol=:sonamepatt:fnnamepatt
هنگامی که یک شی مشترک که نام نامی آن مطابقت دارد سونامپت در فرآیند بارگذاری می شود،
تمام نمادهای متنی را که صادر می کند بررسی کنید. اگر هیچ کدام از آن ها مطابقت نداشت fnnamepatt، چاپ یک
پیغام خطا داده و اجرا را رها کنید. این امکان را فراهم می کند تا اطمینان حاصل شود که اجرا انجام می شود
ادامه نمی دهد مگر اینکه یک شی مشترک داده شده حاوی نام تابع خاصی باشد.

هر دو سونامپت و fnnamepatt را می توان با استفاده از معمول نوشت ? و * حروف عام برای
مثال: ":*libc.so*:foo?bar". برای جدا کردن می توانید از کاراکترهای دیگری به جز دو نقطه استفاده کنید
دو الگو فقط مهم است که شخصیت اول و جداکننده
شخصیت یکسان است به عنوان مثال، مثال بالا نیز می تواند نوشته شود
"Q*libc.so*Qfoo?bar". چندگانه
--نیاز-متن-نماد پرچم ها مجاز هستند، در این صورت اشیاء مشترکی که بارگذاری می شوند
در این فرآیند در برابر همه آنها بررسی خواهد شد.

هدف از این کار پشتیبانی از استفاده قابل اعتماد از کتابخانه های علامت گذاری شده است. مثلا،
فرض کنید ما یک نسخه از GCC داریم libgomp.so که با علامت گذاری شده است
حاشیه نویسی برای پشتیبانی از Helgrind. بارگذاری اشتباه بسیار آسان و گیج کننده است،
بدون حاشیه نویسی libgomp.so به برنامه بنابراین ایده این است: یک نماد متنی در آن اضافه کنید
برای مثال، کتابخانه علامت‌گذاری شده annotated_for_helgrind_3_6، و سپس پرچم را بدهید
--require-text-symbol=:*libgomp*so*:annotated_for_helgrind_3_6 به طوری که وقتی libgomp.so
بارگذاری می شود، Valgrind جدول نماد خود را اسکن می کند و اگر نماد موجود نباشد، اجرا انجام می شود
سقط شد، به جای ادامه سکوت با کتابخانه بدون علامت. توجه داشته باشید که شما
باید کل پرچم را در گیومه قرار دهید تا از گسترش پوسته ها جلوگیری شود * و ?
حروف عام

--soname-synonyms=syn1=pattern1,syn2=pattern2,...
هنگامی که یک کتابخانه اشتراکی بارگذاری می شود، Valgrind توابع موجود در کتابخانه را بررسی می کند
باید تعویض یا بسته بندی شود. به عنوان مثال، Memcheck جایگزین همه malloc مربوطه می شود
توابع (malloc، free، calloc، ...) با نسخه های خاص خود. چنین جایگزین هایی هستند
به صورت پیش‌فرض فقط در کتابخانه‌های مشترکی انجام می‌شود که نام soname با نام نامی از پیش تعریف شده مطابقت دارد
الگوی (مثلا libc.so* در لینوکس). به طور پیش فرض، هیچ جایگزینی برای یک استاتیک انجام نمی شود
کتابخانه پیوندی یا برای کتابخانه های جایگزین مانند tcmalloc. در برخی موارد،
جایگزینی اجازه می دهد --سونام-مترادف برای مشخص کردن یک الگوی مترادف اضافی، دادن
انعطاف پذیری در جایگزینی

در حال حاضر، این انعطاف پذیری فقط برای توابع مربوط به malloc، با استفاده از مجاز است
مترادف سومالوک. این مترادف برای تمام ابزارهایی که تعویض استاندارد انجام می دهند قابل استفاده است
توابع مربوط به malloc (مثلا memcheck، massif، drd، helgrind، exp-dhat،
exp-sgcheck).

· کتابخانه malloc جایگزین: برای جایگزینی توابع مربوط به malloc در یک جایگزین
کتابخانه با سونام mymalloclib.so، گزینه را بدهید
--soname-synonyms=somalloc=mymalloclib.so. یک الگو را می توان برای تطبیق چندین مورد استفاده کرد
کتابخانه‌ها مثلا، --soname-synonyms=somalloc=*tcmalloc* مطابقت خواهد داشت
نام همه انواع کتابخانه tcmalloc (بومی، اشکال زدایی، پروفایل، ...
انواع tcmalloc).

توجه: نام سونام یک کتابخانه مشترک جن را می توان با استفاده از readelf بازیابی کرد
ابزار

· جایگزینی در کتابخانه ایستا پیوند داده شده با استفاده از NONE الگوی.
مثلاً اگر با libtcmalloc.a، memcheck زمانی که شما به درستی کار می کند
گزینه را بدهید --soname-synonyms=somalloc=هیچکدام. توجه داشته باشید که یک الگوی NONE خواهد بود
با فایل اجرایی اصلی و هر کتابخانه مشترکی که soname ندارد مطابقت دهید.

· برای اجرای یک بیلد «پیش‌فرض» فایرفاکس برای لینوکس، که در آن JEMalloc به آن پیوند داده شده است
اجرایی اصلی، استفاده --soname-synonyms=somalloc=هیچکدام.

اشکال زدایی والگریند OPTIONS


همچنین گزینه هایی برای اشکال زدایی خود Valgrind وجود دارد. شما نباید نیازی به استفاده از آنها داشته باشید
در روند عادی کارها اگر می خواهید لیست را ببینید، از آن استفاده کنید -- help-debug گزینه.

MEMCCHEC OPTIONS


--نشت-بررسی = [پیش‌فرض: خلاصه]
هنگامی که فعال است، پس از اتمام برنامه مشتری، نشت حافظه را جستجو کنید. اگر تنظیم شود
خلاصه، می گوید چند نشت رخ داده است. اگر تنظیم شود کامل or بله، هر نشت فردی
همانطور که توسط گزینه ها مشخص شده است، با جزئیات نشان داده می شود و/یا به عنوان یک خطا شمارش می شود
--نمایش-نشت-انواع و --errors-for-leak-typs.

--نشت-رزولوشن= [پیش‌فرض: بالا]
هنگام انجام بررسی نشت، تعیین می کند که Memcheck چقدر مایل است که متفاوت را در نظر بگیرد
به منظور ادغام چندین نشت در یک واحد، بک تراشه ها یکسان باشند
گزارش نشت وقتی روی پایین، فقط دو ورودی اول نیاز به مطابقت دارند. چه زمانی با، چهار
ورودی ها باید مطابقت داشته باشند. چه زمانی بلند، همه ورودی ها باید مطابقت داشته باشند.

برای اشکال زدایی نشت هاردکور، احتمالاً می خواهید از آن استفاده کنید --نشت-رزولیشن=بالا با هم
با --num-callers=40 یا تعدادی از این تعداد زیاد

توجه داشته باشید که --نشت-رزولیشن تنظیمات بر توانایی Memcheck برای یافتن تأثیر نمی گذارد
نشت می کند. این فقط نحوه ارائه نتایج را تغییر می دهد.

--show-leak-kinds= [پیش‌فرض: قطعی، ممکن]
انواع نشتی را برای نشان دادن در a مشخص می کند کامل جستجوی نشت به یکی از روش های زیر:

· فهرستی از یک یا چند مورد جدا شده با کاما قطعا غیر مستقیم ممکن قابل دسترس.

· تمام برای مشخص کردن مجموعه کامل (همه انواع نشتی). معادل است با
--show-leak-kinds = قطعی، غیر مستقیم، ممکن، قابل دسترس.

· هیچ برای مجموعه خالی

--errors-for-leak-kinds= [پیش‌فرض: قطعی، ممکن]
انواع نشتی را برای شمارش به عنوان خطا در a مشخص می کند کامل جستجوی نشت در is
به طور مشابه مشخص شده است --نمایش-نشت-انواع

--leak-check-heuristics= [پیش‌فرض: همه]
مجموعه ای از اکتشافات بررسی نشت را مشخص می کند تا در طول جستجوی نشت استفاده شود. در
اکتشافی کنترل می کند که کدام نشانگرهای داخلی به یک بلوک باعث در نظر گرفتن آن می شود
قابل دسترس مجموعه اکتشافی به یکی از روش های زیر مشخص می شود:

· فهرستی از یک یا چند مورد جدا شده با کاما stdstring طول 64 جدید
وراثت چندگانه.

· تمام برای فعال کردن مجموعه کامل اکتشافی. معادل است با
--leak-check-heuristics=stdstring,length64,newarray,multipleinheritance.

· هیچ برای مجموعه خالی

توجه داشته باشید که این اکتشافات وابسته به چیدمان اشیاء تولید شده توسط
کامپایلر C++. آنها با برخی از نسخه های gcc (مانند 4.4 و 4.7) آزمایش شده اند. آنها
ممکن است با سایر کامپایلرهای C++ به درستی کار نکند.

--show-reachable= , --show-possibly-lost=
این گزینه ها یک راه جایگزین برای تعیین انواع نشت برای نشان دادن ارائه می دهند:

· --show-reachable=نه --show-possibly-lost=بله برابر است با
--show-leak-kinds = قطعی، ممکن است.

· --show-reachable=نه --show-possibly-lost=نه برابر است با
--show-leak-kinds=معین.

· --show-reachable=بله برابر است با --show-leak-kinds=all.

توجه داشته باشید که --show-possibly-lost=نه تاثیری ندارد اگر --show-reachable=بله مشخص شده است.

--undef-value-errors= [پیش‌فرض: آره]
کنترل می کند که آیا Memcheck از خطاهای مقدار تعریف نشده استفاده می کند یا خیر. این را تنظیم کنید نه if
شما نمی خواهید خطاهای مقدار تعریف نشده را ببینید. همچنین عوارض جانبی سرعت غیرمجاز را دارد
تا حدودی بالا Memcheck.

--track-origins= [پیش‌فرض: نه]
کنترل می کند که آیا Memcheck منشاء مقادیر اولیه را ردیابی می کند یا خیر. به طور پیش فرض، آن را
نمی کند، به این معنی که اگرچه می تواند به شما بگوید که یک مقدار اولیه نیست
اگر به روشی خطرناک استفاده شود، نمی تواند به شما بگوید که مقدار اولیه از کجا آمده است
از جانب. این اغلب ردیابی مشکل ریشه ای را دشوار می کند.

وقتی روی بله، Memcheck منشاء همه مقادیر اولیه را پیگیری می کند.
سپس، هنگامی که یک خطای مقدار اولیه گزارش نشده است، Memcheck سعی می کند آن را نشان دهد
منشا ارزش مبدا می تواند یکی از چهار مکان زیر باشد: یک بلوک پشته،
یک تخصیص پشته، یک درخواست مشتری، یا منابع متفرقه دیگر (به عنوان مثال، تماس با
برک).

برای مقادیر غیر اولیه که از یک بلوک پشته نشات می‌گیرند، Memcheck محل بلوک را نشان می‌دهد
اختصاص داده شد. برای مقادیر بدون مقدار اولیه که از تخصیص پشته منشأ می گیرند، Memcheck
می تواند به شما بگوید کدام تابع مقدار را اختصاص داده است، اما نه بیشتر از آن -- معمولاً
محل منبع مهاربند باز تابع را به شما نشان می دهد. بنابرین تو باید
به دقت بررسی کنید که همه متغیرهای محلی تابع به درستی مقداردهی اولیه شده باشند.

سربار عملکرد: ردیابی مبدا گران است. سرعت Memcheck را نصف می کند و
استفاده از حافظه را حداقل تا 100 مگابایت و احتمالاً بیشتر افزایش می دهد. با این وجود می تواند
تلاش های لازم برای شناسایی علت اصلی عدم شروع را به شدت کاهش دهید
خطاهای ارزشی، و به همین ترتیب اغلب با وجود اجرای بیشتر، بهره وری برنامه نویس برنده است
به آرامی

دقت: Memcheck ریشه ها را کاملاً دقیق دنبال می کند. برای جلوگیری از فضا و زمان بسیار زیاد
سربار، برخی از تقریب ها ساخته شده است. این امکان وجود دارد، اگرچه بعید است
Memcheck یک منبع نادرست را گزارش می دهد، یا نمی تواند هیچ منبعی را شناسایی کند.

توجه داشته باشید که ترکیب --track-origins=بله و --undef-value-errors=no is
چرند. Memcheck در هنگام راه اندازی این ترکیب را بررسی می کند و رد می کند.

--partial-loads-ok= [پیش‌فرض: آره]
کنترل می کند که Memcheck چگونه بارهای 32، 64، 128 و 256 بیتی را که به طور طبیعی تراز شده اند را کنترل می کند
آدرس هایی که برخی از بایت ها آدرس پذیر هستند و برخی دیگر قابل آدرس دهی نیستند. چه زمانی بله، چنین
بارها خطای آدرس ایجاد نمی کنند. در عوض، بایت های بارگیری شده از غیرقانونی
آدرس‌ها به‌عنوان غیراصولی علامت‌گذاری می‌شوند و آدرس‌های مربوط به آدرس‌های قانونی هستند
به روش معمولی رسیدگی می شود.

چه زمانی نه، با بارهای آدرس‌های تا حدی نامعتبر مانند بارگیری از آدرس‌ها رفتار می‌شود
آدرس‌های کاملاً نامعتبر: یک خطای آدرس غیرقانونی صادر می‌شود و در نتیجه
بایت ها به عنوان مقداردهی اولیه علامت گذاری می شوند.

توجه داشته باشید که کدی که به این شکل عمل می کند، استانداردهای ISO C/C++ را نقض می کند.
و باید شکسته در نظر گرفته شود. در صورت امکان، چنین کدی باید اصلاح شود.

--expensive-definedness-checks= [پیش‌فرض: نه]
کنترل می کند که آیا Memcheck باید دقیق تر و همچنین گران تر (زمان) را به کار گیرد
مصرف کننده) الگوریتم ها هنگام بررسی تعریف شده بودن یک مقدار. تنظیمات پیش فرض است
این کار را انجام ندهید و معمولاً کافی است. با این حال، برای کد بسیار بهینه شده است
والگریند ممکن است گاهی اوقات به اشتباه شکایت کند. استناد والگریند با
--expensive-definedness-checks=بله کمک می کند اما هزینه عملکرد دارد. زمان اجرا
تخریب 25% مشاهده شده است اما هزینه اضافی بستگی زیادی به آن دارد
برنامه در دست

--keep-stacktraces=alloc|رایگان|alloc-and-free|alloc-then-free|هیچکدام [پیش‌فرض:
تخصیص و رایگان]
کنترل می‌کند کدام رد(های) پشته برای بلوک‌های malloc'd و/یا free'd نگهداری شود.

با تخصیص پس از آن رایگان، یک ردیابی پشته در زمان تخصیص ثبت می شود و مرتبط می شود
با بلوک هنگامی که بلوک آزاد می شود، ردیابی پشته دوم ثبت می شود و این
ردیابی پشته تخصیص را جایگزین می کند. در نتیجه، خطاهای مربوط به "استفاده پس از رایگان" وجود دارد
به این بلوک فقط می تواند یک رد پشته برای جایی که بلوک آزاد شده است را نشان دهد.

با تخصیص و رایگان، هم تخصیص و هم ردیابی پشته توزیع برای بلوک
ذخیره می شوند. از این رو خطای "use after free" هر دو را نشان می دهد که ممکن است باعث خطا شود
تشخیص راحت تر در مقایسه با تخصیص پس از آن رایگان، این تنظیم کمی افزایش می یابد
استفاده از حافظه Valgrind به عنوان بلوک شامل دو مرجع به جای یک مرجع است.

با اختصاص دهید، فقط ردیابی پشته تخصیص ثبت می شود (و گزارش می شود). با رایگان,
فقط ردیابی پشته توزیع ثبت می شود (و گزارش می شود). این ارزش ها تا حدودی
کاهش حافظه Valgrind و استفاده از cpu. بسته به خطا می توانند مفید باشند
انواع مورد جستجو و سطح جزئیاتی که برای تجزیه و تحلیل آنها نیاز دارید. برای
به عنوان مثال، اگر فقط به خطاهای نشت حافظه علاقه مند هستید، کافی است ضبط کنید
ردیابی پشته تخصیص

با هیچ، هیچ رد پشته ای برای malloc و عملیات آزاد ثبت نمی شود. اگر شما
برنامه تعداد زیادی بلوک را تخصیص می دهد و/یا از پشته های مختلف تخصیص می دهد/آزاد می کند
ردیابی، این می تواند به طور قابل توجهی CPU و/یا حافظه مورد نیاز را کاهش دهد. البته تعداد کمی
جزئیات برای خطاهای مربوط به بلوک های پشته گزارش خواهد شد.

توجه داشته باشید که هنگامی که یک ردیابی پشته ثبت می شود، Valgrind ردیابی پشته را در حافظه نگه می دارد
حتی اگر توسط هیچ بلوکی به آن ارجاع داده نشده باشد. برخی از برنامه ها (به عنوان مثال، بازگشتی
الگوریتم ها) می توانند تعداد زیادی رد پشته ایجاد کنند. اگر Valgrind بیش از حد استفاده کند
در چنین شرایطی می توانید حافظه مورد نیاز را با گزینه ها کاهش دهید
--keep-stacktraces و/یا با استفاده از یک مقدار کوچکتر برای گزینه -- تعداد تماس گیرندگان.

--freelist-vol= [پیش‌فرض: 20000000]
هنگامی که برنامه مشتری با استفاده از حافظه آزاد می کند رایگان (در C) یا حذف (C++)، آن حافظه
بلافاصله برای تخصیص مجدد در دسترس نیست. در عوض علامت گذاری شده است
غیرقابل دسترس و در صف بلوک های آزاد شده قرار می گیرد. هدف این است که تا زمانی که
ممکن است نقطه ای باشد که در آن حافظه آزاد شده دوباره به گردش در می آید. این
این شانس را افزایش می دهد که Memcheck بتواند دسترسی های نامعتبر به بلوک ها را شناسایی کند
برای مدت زمان قابل توجهی پس از آزادی آنها.

این گزینه حداکثر اندازه کل بلوک های صف را بر حسب بایت مشخص می کند.
مقدار پیش فرض بیست میلیون بایت است. افزایش این مقدار کل را افزایش می دهد
حافظه استفاده شده توسط Memcheck اما ممکن است استفاده نامعتبر از بلوک های آزاد شده را شناسایی کند
در غیر این صورت شناسایی نشده باشید

--freelist-big-blocks= [پیش‌فرض: 1000000]
هنگام ایجاد بلوک از صف بلوک های آزاد شده برای تخصیص مجدد،
Memcheck در اولویت بلوک ها را با اندازه بزرگتر یا مساوی دوباره به گردش در می آورد
-- freelist-big-blocks. این تضمین می کند که آزادسازی بلوک های بزرگ (به ویژه آزادسازی
بلوک های بزرگتر از -- freelist-vol) بلافاصله منجر به گردش مجدد نمی شود
همه (یا بسیاری از) بلوک های کوچک در لیست رایگان. به عبارت دیگر این گزینه
احتمال کشف نشانگرهای آویزان برای بلوک های "کوچک" را افزایش می دهد
وقتی بلوک های بزرگ آزاد می شوند.

تنظیم مقدار 0 به این معنی است که همه بلوک ها به ترتیب FIFO دوباره در گردش هستند.

--workaround-gcc296-bugs= [پیش‌فرض: نه]
هنگامی که فعال است، فرض کنید که مقدار کمی از نشانگر پشته را می خواند و می نویسد
به دلیل اشکالات GCC 2.96 است و آنها را گزارش نمی کند. "فاصله کوچک" 256 است
بایت به صورت پیش فرض توجه داشته باشید که GCC 2.96 کامپایلر پیش فرض در برخی از لینوکس های قدیمی است
توزیع ها (RedHat 7.X) و بنابراین ممکن است لازم باشد از این گزینه استفاده کنید. از آن استفاده نکنید اگر
شما مجبور نیستید، زیرا می تواند باعث نادیده گرفتن خطاهای واقعی شود. جایگزین بهتر
استفاده از GCC جدیدتر است که در آن این باگ برطرف شده است.

همچنین ممکن است لازم باشد هنگام کار با GCC 3.X یا 4.X روی 32 بیت از این گزینه استفاده کنید.
PowerPC Linux. این به این دلیل است که GCC کدی را تولید می کند که گهگاه به زیر دسترسی پیدا می کند
نشانگر پشته، به ویژه برای تبدیل های ممیز شناور به/از عدد صحیح. این
این مشخصات ELF 32 بیتی PowerPC را نقض می کند، که هیچ پیش بینی ای برای آن ندارد
مکان های زیر نشانگر پشته قابل دسترسی باشد.

--show-mismatched-frees= [پیش‌فرض: آره]
وقتی فعال باشد، Memcheck بررسی می‌کند که بلوک‌های پشته با استفاده از تابعی تخصیص داده شده باشند
با تابع تخصیص مطابقت دارد. یعنی انتظار دارد رایگان برای انتقال استفاده شود
بلوک های اختصاص داده شده توسط از malloc, حذف کردن برای بلوک های اختصاص داده شده توسط جدیدو حذف[] برای
بلوک های اختصاص داده شده توسط جدید[]. در صورت تشخیص عدم تطابق، خطا گزارش می شود. این در
به طور کلی مهم است زیرا در برخی از محیط ها، آزادسازی با یک تابع غیر منطبق است
می تواند باعث تصادف شود.

با این حال سناریویی وجود دارد که در آن نمی توان از چنین عدم تطابق اجتناب کرد. آن زمانی است که
کاربر پیاده سازی هایی از جدید/جدید[] آن تماس از malloc و از حذف کردن/حذف[]
آن تماس رایگان، و این توابع به صورت نامتقارن خط خورده اند. مثلا تصور کنید
که حذف[] خط کشی شده است اما جدید[] نیست. نتیجه این است که Memcheck همه را "می بیند".
حذف[] تماس به عنوان تماس مستقیم به رایگان، حتی زمانی که منبع برنامه حاوی شماره باشد
تماس های نامتناسب

این باعث بسیاری از گزارش های خطای گیج کننده و نامربوط می شود.
--show-mismatched-frees=نه این چک ها را غیرفعال می کند. به طور کلی توصیه نمی شود
اگرچه آنها را غیرفعال کنید، زیرا ممکن است در نتیجه خطاهای واقعی را از دست بدهید.

--ignore-ranges=0xPP-0xQQ[,0xRR-0xSS]
هر محدوده ای که در این گزینه فهرست شده است (و می توان محدوده های متعددی را مشخص کرد که با آنها از هم جدا شوند
کاما) با بررسی آدرس پذیری Memcheck نادیده گرفته می شود.

--malloc-fill=
بلوک های اختصاص داده شده توسط malloc، new، و غیره، اما نه توسط calloc، با مشخص شده را پر می کند
بایت این می تواند هنگام تلاش برای از بین بردن مشکلات خراب حافظه مبهم مفید باشد.
منطقه اختصاص داده شده هنوز توسط Memcheck به عنوان نامشخص در نظر گرفته می شود -- فقط این گزینه
محتوای آن را تحت تأثیر قرار می دهد. توجه داشته باشید که --malloc-fill بر بلوک حافظه تأثیر نمی گذارد
به عنوان آرگومان برای درخواست های مشتری VALGRIND_MEMPOOL_ALLOC یا
VALGRIND_MALLOCLIKE_BLOCK.

--پرکردن آزاد=
بلوک های آزاد شده توسط رایگان، حذف و غیره را با مقدار بایت مشخص شده پر می کند. این میتواند باشد
هنگام تلاش برای از بین بردن مشکلات خراب حافظه مبهم مفید است. منطقه آزاد شده است
هنوز توسط Memcheck برای دسترسی معتبر نیست -- این گزینه فقط بر آن تأثیر می گذارد
فهرست. توجه داشته باشید که -- پر کردن رایگان هنگامی که به عنوان یک بلوک از حافظه استفاده می شود، تأثیری نمی گذارد
آرگومان به درخواست های مشتری VALGRIND_MEMPOOL_FREE یا VALGRIND_FREELIKE_BLOCK.

CACHEGRIND OPTIONS


--I1= ، ، اندازه>
اندازه، ارتباط و اندازه خط کش دستورالعمل سطح 1 را مشخص کنید.

--D1= ، ، اندازه>
اندازه، ارتباط و اندازه خط کش داده سطح 1 را مشخص کنید.

--LL= ، ، اندازه>
اندازه، ارتباط و اندازه خط کش آخرین سطح را مشخص کنید.

--cache-sim=no|بله [آره]
مجموعه ای از دسترسی به حافظه پنهان و تعداد از دست دادن را فعال یا غیرفعال می کند.

--branch-sim=no|بله [نه]
مجموعه دستورالعمل های شعبه و تعداد پیش بینی نادرست را فعال یا غیرفعال می کند. توسط
به طور پیش فرض این غیرفعال است زیرا Cachegrind را تقریباً 25% کند می کند. توجه داشته باشید که
نمی توانید مشخص کنید --cache-sim=نه و --branch-sim=no با هم، به عنوان که ترک
Cachegrind بدون هیچ اطلاعاتی برای جمع آوری.

--cachegrind-out-file=
داده های پروفایل را به جای فایل خروجی پیش فرض در فایل بنویسید.
cachegrind.out. . را %p و %q برای جاسازی فرآیند می توان از مشخص کننده های قالب استفاده کرد
شناسه و/یا محتویات یک متغیر محیطی در نام، همانطور که برای
گزینه اصلی --ورود به سیستم فایل.

CALLGRIND OPTIONS


--callgrind-out-file=
داده های پروفایل را به جای فایل خروجی پیش فرض در فایل بنویسید.
callgrind.out. . در %p و %q برای جاسازی فرآیند می توان از مشخص کننده های قالب استفاده کرد
شناسه و/یا محتویات یک متغیر محیطی در نام، همانطور که برای
گزینه اصلی --ورود به سیستم فایل. هنگامی که چند بار تخلیه انجام می شود، نام فایل تغییر می کند
به علاوه؛ زیر را ببینید.

--dump-line= [پیش‌فرض: آره]
این مشخص می کند که شمارش رویداد باید در دانه بندی خط منبع انجام شود.
این اجازه می دهد تا حاشیه نویسی منبع برای منابعی که با اطلاعات اشکال زدایی کامپایل شده اند
(-g).

--dump-instr= [پیش‌فرض: نه]
این مشخص می کند که شمارش رویدادها باید با جزئیات هر دستورالعمل انجام شود.
این اجازه می دهد تا حاشیه نویسی کد اسمبلی. در حال حاضر نتایج فقط قابل نمایش هستند
توسط KCachegrind.

--compress-strings= [پیش‌فرض: آره]
این گزینه بر فرمت خروجی داده های پروفایل تأثیر می گذارد. مشخص می کند که آیا
رشته ها (نام فایل ها و توابع) باید با اعداد شناسایی شوند. این کوچک می شود
فایل، اما خواندن را برای انسان دشوارتر می کند (که در هیچ کدام توصیه نمی شود
مورد).

--compress-pos= [پیش‌فرض: آره]
این گزینه بر فرمت خروجی داده های پروفایل تأثیر می گذارد. مشخص می کند که آیا
موقعیت های عددی همیشه به عنوان مقادیر مطلق مشخص می شوند یا مجاز هستند
نسبت به اعداد قبلی این باعث کاهش حجم فایل می شود.

--combine-dumps= [پیش‌فرض: نه]
وقتی فعال باشد، زمانی که قرار است چندین قسمت داده نمایه تولید شود، این قسمت‌ها می‌شوند
به همان فایل خروجی اضافه شده است. توصیه نمیشود.

--dump-every-bb= [پیش‌فرض: 0, هرگز]
داده های نمایه را هر بار تخلیه کنید تعداد دفعات مشاهده بلوک های اساسی اینکه آیا تخلیه مورد نیاز است یا نه فقط بررسی می شود
زمانی که زمانبندی داخلی Valgrind اجرا می شود. بنابراین، حداقل تنظیمات مفید است
حدود 100000. شمارش یک مقدار 64 بیتی است تا دوره‌های تخلیه طولانی را ممکن کند.

--dump-fore=
هنگام ورود تخلیه کنید تابع.

--zero-fore=
هنگام ورود همه هزینه ها را صفر کنید تابع.

--dump-after=
هنگام خروج تخلیه کنید تابع.

--instr-atstart= [پیش‌فرض: آره]
مشخص کنید که آیا می خواهید Callgrind شبیه سازی و نمایه سازی را از ابتدای شروع کند
برنامه. وقتی روی no تنظیم شود، Callgrind نمی‌تواند هیچ اطلاعاتی را جمع‌آوری کند.
از جمله تماس ها، اما حداکثر کاهش سرعت آن حدود 4 است که حداقل است
سربار Valgrind. ابزار دقیق را می توان به صورت تعاملی از طریق callgrind_control فعال کرد
-I در.

توجه داشته باشید که نمودار تماس حاصل به احتمال زیاد حاوی نخواهد بود اصلی، اما خواهد شد
شامل تمام توابع اجرا شده پس از فعال شدن ابزار دقیق. ابزار دقیق
همچنین می تواند به صورت برنامه ای فعال/غیرفعال شود. فایل Callgrind شامل callgrind.h را ببینید
برای ماکرویی که باید در کد منبع خود استفاده کنید.

برای شبیه سازی حافظه نهان، نتایج هنگام روشن کردن ابزار دقیق کمتر خواهد بود
بعداً در اجرای برنامه، زیرا شبیه ساز در آن لحظه با یک کش خالی شروع می شود.
برای مقابله با این خطا، مجموعه رویداد را بعداً روشن کنید.

--collect-atstart= [پیش‌فرض: آره]
مشخص کنید که مجموعه رویداد در ابتدای اجرای نمایه فعال باشد یا خیر.

برای اینکه فقط به بخش هایی از برنامه خود نگاه کنید، دو امکان دارید:

1. قبل از ورود به قسمت برنامه ای که می خواهید نمایه کنید شمارنده های رویداد را صفر کنید و آن را تخلیه کنید
رویداد پس از خروج از آن بخش برنامه به یک فایل تبدیل می شود.

2. حالت جمع آوری را در صورت نیاز روشن/خاموش کنید تا فقط شمارنده رویداد را ببینید
در حالی که در داخل بخشی از برنامه می خواهید پروفایل کنید.

در صورتی می توان از گزینه دوم استفاده کرد که قسمت برنامه ای که می خواهید نمایه کنید بسیاری نامیده می شود
بار. گزینه 1 یعنی ایجاد دامپ زیاد در اینجا عملی نیست.

وضعیت مجموعه را می توان در هنگام ورود و خروج از یک تابع معین با این گزینه تغییر داد
--تغییر-جمع آوری. اگر از این گزینه استفاده می کنید، وضعیت مجموعه باید در قسمت غیرفعال شود
شروع توجه داشته باشید که مشخصات --تغییر-جمع آوری به طور ضمنی تنظیم می کند
--collect-state=no.

وضعیت مجموعه را می توان با درج درخواست مشتری نیز تغییر داد
CALLGRIND_TOGGLE_COLLECT ; در موقعیت های کد مورد نیاز

--toggle-collect=
تغییر وضعیت مجموعه در هنگام ورود/خروج از تابع.

--collect-jumps= [پیش‌فرض: نه]
این مشخص می کند که آیا اطلاعات مربوط به پرش های (شرطی) باید جمع آوری شود یا خیر. مانند
در بالا، callgrind_annotate در حال حاضر نمی تواند داده ها را به شما نشان دهد. شما باید استفاده کنید
KCachegrind برای دریافت فلش های پرش در کد مشروح.

--collect-systime= [پیش‌فرض: نه]
این مشخص می کند که آیا اطلاعات مربوط به زمان تماس سیستم باید جمع آوری شود یا خیر.

--collect-bus= [پیش‌فرض: نه]
این مشخص می کند که آیا تعداد رویدادهای اتوبوس سراسری اجرا شده باید جمع آوری شود یا خیر.
از نوع رویداد "Ge" برای این رویدادها استفاده می شود.

--cache-sim= [پیش‌فرض: نه]
مشخص کنید که آیا می خواهید شبیه سازی کش کامل را انجام دهید. به طور پیش فرض، فقط دستورالعمل خوانده می شود
دسترسی ها شمارش خواهند شد ("Ir"). با شبیه سازی کش، شمارنده های رویداد بیشتر هستند
فعال: حافظه پنهان هنگام خواندن دستورالعمل ها ("I1mr"/"ILmr")، دسترسی های خواندن داده ها ("Dr") وجود ندارد.
و موارد مربوط به حافظه پنهان ("D1mr"/"DLmr")، دسترسی های نوشتن داده ها ("Dw") و حافظه نهان مرتبط
از دست می دهد ("D1mw"/"DLmw"). برای اطلاعات بیشتر، Cachegrind را ببینید: یک کش و شاخه-
نمایه ساز پیش بینی

--branch-sim= [پیش‌فرض: نه]
مشخص کنید که آیا می خواهید شبیه سازی پیش بینی شاخه را انجام دهید. شمارنده های رویداد بیشتر هستند
فعال: تعداد شاخه‌های شرطی اجرا شده و خطاهای پیش‌بینی‌کننده مرتبط
("Bc"/"Bcm")، پرش‌های غیرمستقیم اجرا شده و اشتباهات مربوط به پیش‌بینی آدرس پرش
("بی"/"بیم").

هلگریند OPTIONS


--free-is-write=نه|بله [پیش‌فرض: نه]
هنگامی که فعال باشد (نه به طور پیش فرض)، Helgrind با آزادسازی حافظه پشته به گونه ای رفتار می کند که گویی این کار را انجام می دهد
حافظه بلافاصله قبل از رایگان نوشته شد. این نژادهایی را که حافظه در آن قرار دارد، آشکار می کند
توسط یک رشته ارجاع داده می شود، و توسط رشته دیگر آزاد می شود، اما قابل مشاهده نیست
رویداد همگام سازی برای اطمینان از اینکه مرجع قبل از رایگان اتفاق می افتد.

این قابلیت در Valgrind 3.7.0 جدید است و به عنوان آزمایشی در نظر گرفته می شود. این است
به طور پیش فرض فعال نیست زیرا تعامل آن با تخصیص دهنده های حافظه سفارشی وجود ندارد
در حال حاضر به خوبی درک شده است از بازخورد کاربران استقبال می شود.

--track-lockorders=نه|بله [پیش‌فرض: آره]
هنگامی که فعال است (پیش‌فرض)، Helgrind بررسی سازگاری ترتیب قفل را انجام می‌دهد. برای
برخی از برنامه های باگ، تعداد زیادی از خطاهای ترتیب قفل گزارش شده می توانند تبدیل شوند
آزاردهنده است، به خصوص اگر فقط به خطاهای مسابقه علاقه دارید. بنابراین شما ممکن است
غیرفعال کردن بررسی سفارش قفل مفید است.

--history-level=none|تقریبا|کامل [پیش‌فرض: پر شده]
--history-level=full (پیش‌فرض) باعث می‌شود که Helgrind اطلاعات کافی در مورد آن را جمع‌آوری کند
"قدیمی" دسترسی دارد که می تواند دو رد پشته را در یک گزارش مسابقه ایجاد کند -- هر دو پشته
ردیابی برای دسترسی فعلی و ردیابی برای دسترسی قدیمی تر و متناقض. به
استفاده از حافظه را محدود کنید، ردیابی های پشته دسترسی های "قدیمی" به حداکثر 8 ورودی محدود شده است.
حتی اگر -- تعداد تماس گیرندگان ارزش بزرگتر است

جمع آوری چنین اطلاعاتی هم از نظر سرعت و هم از نظر حافظه گران است، به ویژه برای
برنامه هایی که بسیاری از رویدادهای همگام سازی بین رشته ای (قفل، باز کردن و غیره) را انجام می دهند.
بدون چنین اطلاعاتی، ردیابی علل ریشه ای نژادها دشوارتر است.
با این وجود، ممکن است در شرایطی که فقط می خواهید آن را بررسی کنید، به آن نیاز نداشته باشید
حضور یا عدم حضور نژادها، برای مثال، هنگام انجام آزمایش رگرسیون a
برنامه قبلاً بدون مسابقه

--history-level=هیچکدام افراطی مخالف است. باعث می شود هلگریند هیچ جمع آوری نکند
اطلاعات مربوط به دسترسی های قبلی این می تواند به طور چشمگیری سریعتر از
--history-level=full.

--history-level=تقریبا سازش بین این دو افراط را فراهم می کند. این باعث می شود
Helgrind برای نشان دادن ردیابی کامل برای دسترسی بعدی و اطلاعات تقریبی
در مورد دسترسی قبلی این اطلاعات تقریبی از دو پشته تشکیل شده است و
تضمین شده است که دسترسی اولیه در جایی بین نقاط برنامه رخ داده است
با دو پشته مشخص می شود. این به اندازه نشان دادن پشته دقیق برای آن مفید نیست
دسترسی قبلی (به عنوان --history-level=full می کند)، اما بهتر از هیچ است، و آن را
تقریباً به همان سرعت است --history-level=هیچکدام.

--conflict-cache-size=N [پیش‌فرض: 1000000]
این پرچم فقط در --history-level=full.

اطلاعات مربوط به دسترسی های متناقض "قدیمی" در حافظه پنهان با اندازه محدود ذخیره می شود.
با مدیریت به سبک LRU. این امر ضروری است زیرا ذخیره a عملی نیست
ردیابی پشته برای هر دسترسی به حافظه ایجاد شده توسط برنامه. اطلاعات تاریخی
در مکان‌هایی که اخیراً به آن‌ها دسترسی پیدا نکرده‌اند، به صورت دوره‌ای کنار گذاشته می‌شود تا فضا در آن آزاد شود
کش

این گزینه اندازه حافظه پنهان را بر حسب تعداد حافظه های مختلف کنترل می کند
آدرس هایی که اطلاعات دسترسی متناقض برای آنها ذخیره می شود. اگر آن را پیدا کردید
Helgrind اشتباهات مسابقه را تنها با یک پشته به جای دو عدد مورد انتظار نشان می دهد
پشته، سعی کنید این مقدار را افزایش دهید.

حداقل مقدار 10,000 و حداکثر 30,000,000 است (XNUMX برابر پیش فرض
ارزش). افزایش مقدار به میزان 1، نیاز به حافظه Helgrind را بسیار افزایش می دهد
تقریباً 100 بایت، بنابراین حداکثر مقدار به راحتی سه گیگابایت اضافی یا بیشتر مصرف می کند
از حافظه

--check-stack-refs=no|بله [پیش‌فرض: آره]
Helgrind به طور پیش‌فرض تمام دسترسی‌های حافظه داده‌ای که برنامه شما انجام می‌دهد را بررسی می‌کند. این پرچم
به شما امکان می دهد از بررسی دسترسی به پشته های رشته (متغیرهای محلی) صرفنظر کنید. این می تواند
عملکرد را بهبود می بخشد، اما به قیمت از دست دادن مسابقات در داده های تخصیص داده شده پشته تمام می شود.

--ignore-thread-creation= [پیش‌فرض: نه]
کنترل می کند که آیا همه فعالیت ها در طول ایجاد رشته باید نادیده گرفته شوند یا خیر. به صورت پیش فرض
فقط در سولاریس فعال است. سولاریس توان عملیاتی، موازی و
مقیاس پذیری نسبت به سایر سیستم عامل ها، به قیمت قفل گذاری دقیق تر
فعالیت. این به این معنی است که برای مثال وقتی یک رشته تحت glibc ایجاد می شود، فقط یک موضوع
قفل بزرگ برای تمام تنظیمات نخ استفاده می شود. Solaris libc از چندین قفل ریزدانه استفاده می کند
و تاپیک creator در اسرع وقت فعالیت خود را از سر می گیرد، به عنوان مثال ترک می کند
پشته و دنباله راه اندازی TLS را به موضوع ایجاد شده بچسبانید. این وضعیت هلگریند را گیج می کند
همانطور که فرض می کند نظم نادرستی بین خالق و مخلوق وجود دارد
نخ؛ و بنابراین بسیاری از انواع شرایط مسابقه در برنامه وجود نخواهد داشت
گزارش شده است. برای جلوگیری از چنین ترتیب نادرستی، این گزینه خط فرمان روی yes by تنظیم شده است
پیش فرض در سولاریس بنابراین تمام فعالیت ها (بارگیری ها، ذخیره ها، درخواست های مشتری) نادیده گرفته می شود
در حین:

· ()pthread_create در رشته سازنده تماس بگیرید

· مرحله ایجاد نخ (راه اندازی پشته و TLS) در موضوع ایجاد شده

همچنین حافظه جدیدی که در طول ایجاد رشته تخصیص داده شده است، ردیابی نمی شود، یعنی گزارش مسابقه
در آنجا سرکوب شده است. DRD به طور ضمنی همین کار را انجام می دهد. این امر ضروری است زیرا
Solaris libc بسیاری از اشیاء را در حافظه پنهان می کند و از آنها برای رشته های مختلف و غیره استفاده می کند
هلگریند را گیج می کند.

DRD OPTIONS


--check-stack-var= [پیش‌فرض: نه]
کنترل می کند که آیا DRD مسابقات داده را روی متغیرهای پشته تشخیص می دهد یا خیر. تأیید متغیرهای پشته
به طور پیش فرض غیرفعال است زیرا اکثر برنامه ها متغیرهای پشته را به اشتراک نمی گذارند
موضوعات.

--exclusive-threshold= [پیش‌فرض: خاموش]
اگر قفل mutex یا writer بیشتر از زمان نگه داشته شده باشد، یک پیام خطا چاپ کنید
در میلی ثانیه مشخص شده است. این گزینه تشخیص اختلاف قفل را فعال می کند.

--join-list-vol= [پیش‌فرض: 10]
مسابقه داده ای که بین یک عبارت در انتهای یک رشته و رشته دیگر رخ می دهد
اگر اطلاعات دسترسی به حافظه بلافاصله پس از یک رشته حذف شود، ممکن است از دست داده شود
ملحق شده است. این گزینه به شخص اجازه می دهد تا برای تعداد رشته های متصل به حافظه مشخص کند
اطلاعات دسترسی باید حفظ شود.

--first-race-only= [پیش‌فرض: نه]
اینکه فقط اولین مسابقه داده ای که در یک مکان حافظه شناسایی شده است گزارش شود
یا تمام رقابت های داده ای که در یک مکان حافظه شناسایی شده اند.

--free-is-write= [پیش‌فرض: نه]
گزارش مسابقه بین دسترسی به حافظه و آزادسازی حافظه. فعال کردن این
گزینه ممکن است باعث شود DRD کمی کندتر اجرا شود. یادداشت:

· هنگام استفاده از تخصیص دهنده های حافظه سفارشی که از آن استفاده می کنند، این گزینه را فعال نکنید
VG_USERREQ__MALLOCLIKE_BLOCK و VG_USERREQ__FREELIKE_BLOCK
منجر به مثبت کاذب شود

· هنگام استفاده از اشیاء شمارش مرجع، این گزینه را فعال نکنید زیرا این کار را انجام می دهد
حتی زمانی که آن کد به درستی حاشیه نویسی شده باشد، نتایج مثبت کاذب ایجاد می کند
ANNOTATE_HAPPENS_BEFORE و ANNOTATE_HAPPENS_AFTER. به عنوان مثال خروجی را ببینید
دستور زیر برای مثال: valgrind --tool=drd --free-is-write=yes
drd/tests/annotate_smart_pointer.

--report-signal-unlocked= [پیش‌فرض: آره]
تماس‌ها را گزارش کنیم یا نه pthread_cond_signal و pthread_cond_broadcast که در آن
mutex مرتبط با سیگنال از طریق pthread_cond_wait or
pthread_cond_timed_waitدر زمان ارسال سیگنال قفل نیست. ارسال سیگنال
بدون نگه داشتن قفل در mutex مرتبط یک خطای برنامه نویسی رایج است که می تواند
باعث ایجاد شرایط ظریف مسابقه و رفتار غیرقابل پیش بینی می شود. موارد غیر معمول وجود دارد
الگوهای همگام سازی با این حال در جایی که ارسال سیگنال بدون نگه داشتن a امن است
mutex مرتبط را قفل کنید.

--segment-merge= [پیش‌فرض: آره]
ادغام بخش را کنترل می کند. ادغام بخش الگوریتمی برای محدود کردن استفاده از حافظه است
الگوریتم تشخیص مسابقه داده غیرفعال کردن ادغام بخش ممکن است دقت را بهبود بخشد
به اصطلاح «سایر بخش‌ها» در گزارش‌های مسابقه نمایش داده می‌شوند، اما همچنین می‌توانند باعث خروج شوند
خطای حافظه

--segment-merging-interval= [پیش‌فرض: 10]
ادغام بخش را فقط پس از تعداد مشخص شده بخش جدید انجام دهید
ایجاد شده. این یک گزینه پیکربندی پیشرفته است که به فرد امکان می دهد انتخاب کند که آیا انجام شود یا خیر
استفاده از حافظه DRD را با انتخاب مقدار کم یا اجازه دادن به DRD سریعتر به حداقل برسانید
انتخاب مقدار کمی بالاتر مقدار بهینه برای این پارامتر به مقدار بستگی دارد
برنامه در حال تجزیه و تحلیل مقدار پیش فرض برای اکثر برنامه ها به خوبی کار می کند.

--shared-threshold= [پیش‌فرض: خاموش]
اگر قفل خواننده بیش از زمان مشخص شده نگه داشته شده باشد، پیام خطا را چاپ کنید
(در میلی ثانیه). این گزینه تشخیص اختلاف قفل را فعال می کند.

--show-confl-seg= [پیش‌فرض: آره]
نمایش بخش های متناقض در گزارش های مسابقه. از آنجایی که این اطلاعات می تواند به پیدا کردن آن کمک کند
به دلیل یک مسابقه داده، این گزینه به طور پیش فرض فعال است. غیرفعال کردن این گزینه باعث می شود
خروجی DRD فشرده تر است.

--show-stack-usage= [پیش‌فرض: نه]
استفاده از پشته را در زمان خروج رشته چاپ کنید. هنگامی که یک برنامه تعداد زیادی از
محدود کردن مقدار حافظه مجازی اختصاص داده شده برای موضوعات مهم می شود
پشته های نخ این گزینه امکان مشاهده مقدار حافظه پشته ای را فراهم می کند
توسط هر رشته از برنامه مشتری استفاده می شود. توجه: خود ابزار DRD مقداری را اختصاص می دهد
داده های موقت در پشته نخ مشتری. فضای لازم برای این داده های موقت
وقتی برنامه کلاینت حافظه پشته را تخصیص می دهد باید توسط برنامه مشتری تخصیص داده شود، اما اینطور نیست
در استفاده پشته گزارش شده توسط DRD گنجانده شده است.

--ignore-thread-creation= [پیش‌فرض: نه]
کنترل می کند که آیا همه فعالیت ها در طول ایجاد رشته باید نادیده گرفته شوند یا خیر. به صورت پیش فرض
فقط در سولاریس فعال است. سولاریس توان عملیاتی، موازی و
مقیاس پذیری نسبت به سایر سیستم عامل ها، به قیمت قفل گذاری دقیق تر
فعالیت. این به این معنی است که برای مثال وقتی یک رشته تحت glibc ایجاد می شود، فقط یک موضوع
قفل بزرگ برای تمام تنظیمات نخ استفاده می شود. Solaris libc از چندین قفل ریزدانه استفاده می کند
و تاپیک creator در اسرع وقت فعالیت خود را از سر می گیرد، به عنوان مثال ترک می کند
پشته و دنباله راه اندازی TLS را به موضوع ایجاد شده بچسبانید. این وضعیت DRD را گیج می کند
فرض می کند که نظم نادرستی بین رشته ایجاد کننده و ایجاد شده وجود دارد. و
بنابراین بسیاری از انواع شرایط مسابقه در برنامه گزارش نمی شوند. به
برای جلوگیری از چنین ترتیب نادرستی، این گزینه خط فرمان به طور پیش فرض روی بله تنظیم شده است
سولاریس. بنابراین تمام فعالیت ها (بارگیری ها، ذخیره ها، درخواست های مشتری) در طول:

· ()pthread_create در رشته سازنده تماس بگیرید

· مرحله ایجاد نخ (راه اندازی پشته و TLS) در موضوع ایجاد شده

--trace-addr= [پیش‌فرض: هیچ یک]
تمام فعالیت های بارگذاری و ذخیره را برای آدرس مشخص شده ردیابی کنید. این گزینه ممکن است
بیش از یک بار مشخص شده است.

--ptrace-addr= [پیش‌فرض: هیچ یک]
تمام فعالیت‌های بارگذاری و ذخیره‌سازی را برای آدرس مشخص شده ردیابی کنید و به انجام آن یکنواخت ادامه دهید
پس از آزاد شدن و تخصیص مجدد حافظه در آن آدرس.

--trace-alloc= [پیش‌فرض: نه]
همه تخصیص ها و تخصیص های حافظه را ردیابی کنید. ممکن است مقدار زیادی خروجی تولید کند.

--trace-barrier= [پیش‌فرض: نه]
تمام فعالیت های مانع را ردیابی کنید.

--trace-cond= [پیش‌فرض: نه]
ردیابی تمام فعالیت متغیر شرط.

--trace-fork-join= [پیش‌فرض: نه]
ردیابی همه ایجاد رشته و تمام رویدادهای پایان موضوع.

--trace-hb= [پیش‌فرض: نه]
ردیابی اجرای ANNOTATE_HAPPENS_BEFORE()، ANNOTATE_HAPPENS_AFTER() و
ANNOTATE_HAPPENS_DONE() درخواست های مشتری.

--trace-mutex= [پیش‌فرض: نه]
تمام فعالیت های mutex را ردیابی کنید.

--trace-rwlock= [پیش‌فرض: نه]
ردیابی تمام فعالیت های قفل خواننده-نویسنده.

--trace-semaphore= [پیش‌فرض: نه]
تمام فعالیت های سمافور را ردیابی کنید.

توده OPTIONS


--heap= [پیش‌فرض: آره]
مشخص می کند که آیا پروفایل پشته باید انجام شود یا خیر.

--heap-admin= [پیش‌فرض: 8]
اگر پروفایل heap فعال باشد، تعداد بایت های مدیریتی در هر بلوک را به آن می دهد
استفاده کنید. این باید تخمینی از میانگین باشد، زیرا ممکن است متفاوت باشد. به عنوان مثال
تخصیص دهنده مورد استفاده توسط glibc در لینوکس بین 4 تا 15 بایت در هر بلوک نیاز دارد.
بسته به عوامل مختلف آن تخصیص دهنده نیز برای آزاد شدن به فضای مدیریت نیاز دارد
بلوک می کند، اما Massif نمی تواند این را توضیح دهد.

-- پشته = [پیش‌فرض: نه]
مشخص می کند که آیا پروفایل پشته باید انجام شود یا خیر. این گزینه سرعت Massif را کاهش می دهد
تا حد زیادی، و به طور پیش فرض خاموش است. توجه داشته باشید که Massif فرض می کند که پشته اصلی دارد
اندازه صفر در هنگام راه اندازی این درست نیست، اما انجام دقیق دیگری دشوار است.
علاوه بر این، شروع از صفر بهتر نشان دهنده اندازه قسمت پشته اصلی است
که یک برنامه کاربر واقعاً روی آن کنترل دارد.

--pages-as-heap= [پیش‌فرض: نه]
به Massif می‌گوید که حافظه را در سطح صفحه به جای بلوک malloc'd نمایه کند
مرحله. برای جزئیات بیشتر به بالا مراجعه کنید.

--عمق= [پیش‌فرض: 30]
حداکثر عمق درختان تخصیص ثبت شده برای عکس های فوری دقیق. افزایش آن
باعث می شود Massif تا حدودی کندتر کار کند، از حافظه بیشتری استفاده کند و خروجی بیشتری تولید کند
فایل های.

--alloc-fn=
عملکردهای مشخص شده با این گزینه به گونه ای رفتار می شود که گویی یک پشته هستند
تابع تخصیص مانند از malloc. این برای توابعی مفید است که به آنها wrapper می شوند
از malloc or جدید، که می تواند درختان تخصیص را با اطلاعات غیر جالب پر کند.
این گزینه را می توان چندین بار در خط فرمان مشخص کرد تا چندین نامگذاری شود
توابع.

توجه داشته باشید که تابع نام‌گذاری شده تنها در صورتی با این روش برخورد می‌کند که ورودی بالایی در a باشد
stack trace، یا درست زیر تابع دیگری که به این ترتیب درمان می شود. مثلاً اگر دارید
یک تابع malloc1 که می پیچد از mallocو malloc2 که می پیچد malloc1، فقط مشخص کنید
--alloc-fn=malloc2 تاثیری نخواهد داشت باید مشخص کنید --alloc-fn=malloc1 as
خوب. این کمی ناخوشایند است، اما دلیل آن بررسی تخصیص است
توابع کند است، و اگر Massif نتواند از طریق آن نگاه کند، در زمان زیادی صرفه جویی می کند
به محض اینکه موردی را پیدا کرد که مطابقت ندارد به جای اینکه مجبور باشد، ورودی های ردیابی را پشته کنید
در تمام ورودی ها ادامه دهید

توجه داشته باشید که نام های C++ جدا شده اند. همچنین توجه داشته باشید که نام های C++ بیش از حد باید نوشته شوند
تمام و کمال. ممکن است برای جلوگیری از شکستن پوسته آنها، نقل قول های منفرد ضروری باشد.
مثلا:

--alloc-fn='operator new(unsigned, std::nothrow_t const&)'

--ignore-fn=
هر گونه تخصیص مستقیم پشته (یعنی تماس با از malloc, جدیدو غیره یا فراخوانی یک تابع
به نام یک --alloc-fn گزینه) که در یک تابع مشخص شده توسط این گزینه رخ می دهد
نادیده گرفته شود. این بیشتر برای اهداف آزمایشی مفید است. این گزینه قابل تعیین است
چندین بار در خط فرمان، برای نامگذاری چندین تابع.

هر تخصیص مجدد یک بلوک نادیده گرفته شده نیز نادیده گرفته خواهد شد، حتی اگر تخصیص مجدد تماس انجام می دهد
در یک تابع نادیده گرفته نمی شود. با این کار از احتمال وجود اندازه های پشته منفی جلوگیری می شود
اگر بلوک های نادیده گرفته شده کوچک شوند تخصیص مجدد.

قوانین نوشتن نام توابع C++ مانند for است --alloc-fn در بالا.

-- آستانه = [پیش‌فرض: 1.0]
آستانه اهمیت برای تخصیص پشته، به عنوان درصدی از اندازه کل حافظه.
ورودی های درخت تخصیصی که کمتر از این مقدار را تشکیل می دهند، تجمیع می شوند. توجه داشته باشید که
این باید همراه با گزینه ms_print به همین نام مشخص شود.

--peak-inaccuracy= [پیش‌فرض: 1.0]
Massif لزوماً پیک تخصیص حافظه جهانی واقعی را ثبت نمی کند. توسط
به‌طور پیش‌فرض، تنها زمانی پیک را ثبت می‌کند که اندازه تخصیص حافظه جهانی از آن بیشتر شود
اوج قبلی حداقل 1.0٪. این به این دلیل است که تخصیص محلی زیادی وجود دارد
در طول مسیر به اوج می رسد، و انجام یک عکس فوری دقیق برای هر یک گران خواهد بود
و بیهوده، زیرا همه آنها به جز یکی بعداً دور ریخته خواهند شد. این عدم دقت می تواند باشد
از طریق این گزینه (حتی به 0.0٪) تغییر کرد، اما Massif به شدت کندتر خواهد شد.
عدد به صفر نزدیک می شود

--زمان-واحد= [پیش‌فرض: i]
واحد زمان مورد استفاده برای پروفایل سه احتمال وجود دارد: دستورالعمل
اجرا شد (i)، که برای اکثر موارد خوب است. زمان واقعی (ساعت دیواری) (ms، به عنوان مثال
میلی ثانیه)، که گاهی اوقات مفید است. و بایت های تخصیص داده شده/تخصیص بر روی پشته
و/یا پشته (B)، که برای برنامه های بسیار کوتاه مدت و برای آزمایش مفید است
به این دلیل که در ماشین های مختلف قابل تکرار است.

--detailed-freq= [پیش‌فرض: 10]
فراوانی عکس های فوری دقیق با --detailed-freq=1، هر عکس فوری با جزئیات است.

--max-snapshots= [پیش‌فرض: 100]
حداکثر تعداد عکس های فوری ثبت شده. اگر روی N تنظیم شود، برای همه برنامه ها به جز خیلی
در موارد کوتاه مدت، تعداد نهایی عکس های فوری بین N/2 و N خواهد بود.

--massif-out-file= [پیش‌فرض: massif.out.%p]
داده های پروفایل را به جای فایل خروجی پیش فرض در فایل بنویسید.
توده.بیرون. . در %p و %q برای جاسازی شناسه فرآیند می توان از مشخص کننده های قالب استفاده کرد
و/یا محتویات یک متغیر محیطی در نام، همانطور که برای
گزینه اصلی --ورود به سیستم فایل.

SGCHECK OPTIONS


در حال حاضر هیچ گزینه خط فرمان مخصوص SGCheck وجود ندارد.

BBV OPTIONS


--bb-out-file= [پیش‌فرض: bb.out.%p]
این گزینه نام فایل بردار بلوک اصلی را انتخاب می کند. در %p و %q قالب
مشخص کننده ها را می توان برای جاسازی شناسه فرآیند و/یا محتویات یک محیط استفاده کرد
متغیر در نام، همانطور که در مورد گزینه اصلی وجود دارد --ورود به سیستم فایل.

--pc-out-file= [پیش‌فرض: pc.out.%p]
این گزینه نام فایل PC را انتخاب می کند. این فایل دارای آدرس های شمارنده برنامه است
و اطلاعات نام تابع برای بلوک های اصلی مختلف. این را می توان در ترکیب استفاده کرد
با فایل بردار بلوک اصلی برای انتقال سریع از طریق نام توابع به جای فقط
دستورالعمل به حساب می آید در %p و %q برای جاسازی فرآیند می توان از مشخص کننده های قالب استفاده کرد
شناسه و/یا محتویات یک متغیر محیطی در نام، همانطور که برای
گزینه اصلی --ورود به سیستم فایل.

--interval-size= [پیش‌فرض: 100000000]
این گزینه اندازه فاصله مورد استفاده را انتخاب می کند. پیش فرض 100 میلیون است
دستورالعمل ها، که یک مقدار رایج است. می توان از اندازه های دیگر استفاده کرد. کوچکتر
فواصل زمانی می تواند به برنامه هایی با مراحل با دانه بندی ریزتر کمک کند. با این حال اندازه فاصله کوچکتر
می تواند منجر به مشکلات دقت به دلیل اثرات گرم کردن شود (هنگام فوروارد سریع انواع مختلف
ویژگی‌های معماری اولیه‌سازی نمی‌شوند و به تعدادی نیاز دارد
دستورالعمل ها قبل از "گرم شدن" به حالت یک شبیه سازی کامل بدون انجام خواهد بود
فوروارد سریع اندازه‌های بازه‌ای بزرگ این امر را کاهش می‌دهند.)

--instr-count-only [پیش‌فرض: نه]
این گزینه به ابزار می گوید که فقط مجموع تعداد دستورالعمل ها را نمایش دهد و نه
فایل بردار بلوک اصلی واقعی را ایجاد کنید. این برای اشکال زدایی مفید است و برای
جمع آوری اطلاعات شمارش دستورالعمل بدون ایجاد بردار بلوک اصلی بزرگ
فایل های.

لاکی OPTIONS


--basic-counts= [پیش‌فرض: آره]
هنگامی که فعال باشد، Lackey آمار و اطلاعات زیر را در مورد آن چاپ می کند
اجرای برنامه مشتری:

1. تعداد تماس های تابع مشخص شده توسط --fnname گزینه (پیش فرض
اصلی است). اگر نمادهای برنامه حذف شده باشد، شمارش همیشه خواهد بود
صفر

2. تعداد شعب مشروط مواجه شده و تعداد و نسبت
کسانی که گرفته شده اند

3. تعداد سوپر بلوک های وارد شده و تکمیل شده توسط برنامه. توجه داشته باشید که به دلیل
بهینه سازی های انجام شده توسط JIT، این به هیچ وجه یک مقدار دقیق نیست.

4. تعداد مهمان (x86، amd64، ppc، و غیره) دستورالعمل ها و بیانیه های IR
اجرا شده. IR نمایش میانی RISC مانند Valgrind است که از طریق آن همه
ابزار دقیق انجام می شود.

5. نسبت بین برخی از این شمارش ها.

6. کد خروج از برنامه مشتری.

--detailed-counts= [پیش‌فرض: نه]
زمانی که Lackey فعال باشد، جدولی حاوی تعداد بارها، ذخیره‌ها و ALU چاپ می‌کند
عملیات، با انواع IR آنها متمایز می شود. انواع IR با IR آنها شناسایی می شوند
نام ("I1"، "I8"، ... "I128"، "F32"، "F64، و "V128").

--trace-mem= [پیش‌فرض: نه]
هنگامی که فعال باشد، Lackey اندازه و آدرس تقریباً هر دسترسی به حافظه ای را که توسط آن انجام شده است چاپ می کند
برنامه. برای جزئیات بیشتر به نظرات بالای فایل lakey/lk_main.c مراجعه کنید
در مورد فرمت خروجی، نحوه عملکرد آن و عدم دقت در ردیابی آدرس. توجه داشته باشید
که این گزینه مقدار زیادی خروجی تولید می کند.

--trace-superblocks= [پیش‌فرض: نه]
هنگامی که فعال است، Lackey آدرس هر سوپر بلوک را چاپ می کند (یک ورودی،
خروجی چندگانه، تکه خطی کد) که توسط برنامه اجرا می شود. این در درجه اول از
علاقه به توسعه دهندگان Valgrind. نظرات بالای فایل را ببینید
برای جزئیات بیشتر در مورد فرمت خروجی، lakey/lk_main.c. توجه داشته باشید که این گزینه تولید می کند
مقادیر زیادی خروجی

--fnname= [پیش‌فرض: اصلی]
عملکردی را تغییر می دهد که برای آن تماس ها در چه زمانی شمارش می شوند --basic-counts=بله مشخص شده است.

با استفاده از خدمات onworks.net از valgrind.bin به صورت آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad




×
تبلیغات
❤️اینجا خرید کنید، رزرو کنید یا بخرید - رایگان است، به رایگان ماندن خدمات کمک می‌کند.