Translation

(itstool) path: sect2/para
The standard debugger supplied with FreeBSD 12.1 is called <command>lldb</command> (<application>LLVM debugger</application>). As it is part of the standard installation for that release, there is no need to do anything special to use it. It has good command help, accessible via the <userinput>help</userinput> command, as well as <link xlink:href="https://lldb.llvm.org/">a web tutorial and documentation</link>.
384/4140
Context English Persian State
The secret lies in the last line, which tells <command>make</command> to look in the system makefile called <filename>bsd.port.mk</filename>. It is easy to overlook this line, but this is where all the clever stuff comes from—someone has written a makefile that tells <command>make</command> to do all the things above (plus a couple of other things I did not mention, including handling any errors that may occur) and anyone can get access to that just by putting a single line in their own make file!
راز آن در آخرین خط نهفته است، آنجا که به <command>make</command> می‌گوید داخل makefile سامانه به نام <filename>bsd.port.mk</filename> را نگاه کن. غفلت از این خط آسان است، اما اینجا همان بخشی است که تمام مسائل هوشمندانه می‌آیند—کسی یک makefile نوشته است که به <command>make</command> می‌گوید تمام کارهای بالا را انجام دهد (افزون بر تعدادی کارهای دیگر، مانند رسیدگی به هرگونه خطای احتمالی) و هرکس می‌تواند تنها با اضافه کردن یک خط درون پروندهٔ make خود به آن دست‌یابد!
If you want to have a look at these system makefiles, they are in <filename>/usr/share/mk</filename>, but it is probably best to wait until you have had a bit of practice with makefiles, as they are very complicated (and if you do look at them, make sure you have a flask of strong coffee handy!)
اگر می‌خواهید نگاهی به این پرونده‌های make در سامانه داشته باشید، آنها در <filename>/usr/share/mk</filename> هستند، اما احتمالاً بهتر است منتظر بمانید تا زمانی‌که اندکی تمرین با آنها داشته باشید، زیرا بسیار پیچیده‌اند (و اگر آنها را نگاه کردید، مطمئن شوید یک فلاسک قهوهٔ قوی دم دستتان باشد!)
More Advanced Uses of <command>make</command>
کاربردهای حرفه‌ای‌تر <command>make</command>
<command>Make</command> is a very powerful tool, and can do much more than the simple example above shows. Unfortunately, there are several different versions of <command>make</command>, and they all differ considerably. The best way to learn what they can do is probably to read the documentation—hopefully this introduction will have given you a base from which you can do this.
<command>Make</command> ابزار بسیار قدرتمندی است، و می‌تواند کارهای بسیار بیشتری نسبت به آنچه در مثال بالا مشاهده کردید را انجام دهد. متأسفانه، نسخه‌های مختلفی از <command>make</command> وجود دارد، و آنها به‌شکل قابل‌توجهی متفاوت از یکدیگرند. بهترین روش برای یادگیری آنها مطالعهٔ مستندات است—خوشبختانه این پیش‌درآمد پایه‌ای برای شما فراهم کرده است که به‌کمک آن این امر میسر می‌شود.
The version of make that comes with FreeBSD is the <application>Berkeley make</application>; there is a tutorial for it in <filename>/usr/share/doc/psd/12.make</filename>. To view it, do
نسخه‌ای که به‌همراه FreeBSD می‌آید <application>Berkeley make</application> است؛ آموزه‌ای در مسیرِ <filename>/usr/share/doc/psd/12.make</filename> بدین منظور در دسترس است. برای مشاهدهٔ آن، وارد کنید
<prompt>%</prompt> <userinput>zmore paper.ascii.gz</userinput>
<prompt>%</prompt> <userinput>zmore paper.ascii.gz</userinput>
in that directory.
در همان مسیر.
Many applications in the ports use <application>GNU make</application>, which has a very good set of <quote>info</quote> pages. If you have installed any of these ports, <application>GNU make</application> will automatically have been installed as <command>gmake</command>. It is also available as a port and package in its own right.
بسیاری از برنامه‌های موجود در پورت‌ها از <application>GNU make</application> استفاده می‌کنند، که شامل مجموعه‌ای بسیار خوب از صفحات <quote>اطلاعات</quote> هستند. اگر هرکدام از این پورت‌ها را نصب کرده باشید، <application>GNU make</application> به‌طور خودکار تحت عنوان <command>gmake</command> نصب خواهد شد. همچنین به‌عنوان پورت و بسته‌ای جدا در دسترس است.
To view the info pages for <application>GNU make</application>, you will have to edit <filename>dir</filename> in the <filename>/usr/local/info</filename> directory to add an entry for it. This involves adding a line like
برای آنکه صفحهٔ اطلاعاتِ <application>GNU make</application> را ببینید، لازم است <filename>dir</filename> در مسیر <filename>/usr/local/info</filename> را ویرایش کنید تا ورودی‌ای برای آن اضافه کنید. این شامل اضافه‌کردن خطی مانند
* Make: (make). The GNU Make utility.
* Make: (make). The GNU Make utility.
to the file. Once you have done this, you can type <userinput>info</userinput> and then select <guimenuitem>make</guimenuitem> from the menu (or in <application>Emacs</application>, do <userinput>C-h i</userinput>).
به پرونده است. پس از انجام این کار، می‌توانید عبارت <userinput>info</userinput> را وارد کنید و سپس <guimenuitem>make</guimenuitem> را از فهرست انتخاب کنید (یا در محیطِ <application>Emacs</application>، بزنید <userinput>C-h i</userinput>).
Debugging
اشکال‌زدایی
Introduction to Available Debuggers
پیش‌درآمدی بر اشکال‌زدا‌های موجود
Using a debugger allows running the program under more controlled circumstances. Typically, it is possible to step through the program a line at a time, inspect the value of variables, change them, tell the debugger to run up to a certain point and then stop, and so on. It is also possible to attach to a program that is already running, or load a core file to investigate why the program crashed. It is even possible to debug the kernel, though that is a little trickier than the user applications we will be discussing in this section.
استفاده از اشکال‌زدا این امکان را فراهم می‌کند تا برنامه را تحت شرایط کنترل‌شده‌تری راه‌اندازی کنیم. به‌طور معمول، این امکان هست تا هربار وارد یک خط از برنامه شد، ارزش متغیرها را وارسی کرد، آنها را تغییر داد، به اشکال‌زدا گفت که تا کدام مرحله اجرا و سپس توقف کند، و به‌همین ترتیب. همچنین ممکن است یک برنامهٔ در حال اجرا را به آن ضمیمه کرد، یا یک پروندهٔ حافظه (core) را جهت بررسی علل خراب‌شدن برنامه بار کرد. حتی امکان اشکال‌زدایی هسته نیز وجود دارد، گرچه این کمی پیچیده‌تر از اشکال‌زدایی برنامه‌هایی است که ما قرار است در این بخش مطرح کنیم.
This section is intended to be a quick introduction to using debuggers and does not cover specialized topics such as debugging the kernel. For more information about that, refer to <xref linkend="kerneldebug"/>.
این بخش به‌عنوان پیش‌درآمدی سریع بر استفاده از اشکال‌زداها در نظر گرفته شده است و موضوعات تخصصی چون اشکال‌زداییِ هسته را پوشش نمی‌دهد. برای اطلاعات بیشتر در آن مورد، به <xref linkend="kerneldebug"/> رجوع کنید.
The standard debugger supplied with FreeBSD 12.1 is called <command>lldb</command> (<application>LLVM debugger</application>). As it is part of the standard installation for that release, there is no need to do anything special to use it. It has good command help, accessible via the <userinput>help</userinput> command, as well as <link xlink:href="https://lldb.llvm.org/">a web tutorial and documentation</link>.
اشکال‌زدای استانداردِ عرضه‌شده با FreeBSD نسخهٔ 12.1 <command>lldb</command> (<application>LLVM debugger</application>) نام دارد. نیاز به انجام کار خاصی به‌منظور استفاده از آن نیست، زیرا قسمتی از نصب استاندارد آن توزیع هست. دارای دستور کمک مناسبی است، قابل‌دسترس از طریق دستور <userinput>help</userinput>، و نیز <link xlink:href="https://lldb.llvm.org/">آموزه و مستندات تحت وب</link>.
The <command>lldb</command> command is available for FreeBSD 11.3 <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/ports-using.html">from ports or packages</link> as <package>devel/llvm</package>. This will install the default version of lldb (currently 9.0).
دستور <command>lldb</command> در FreeBSD 11.3 به‌عنوان <package>devel/llvm</package> در <link xlink:href="@@URL_RELPREFIX@@/doc/fa_IR.UTF-8/books/handbook/ports-using.html">پورت‌ها یا بسته‌ها</link> موجود است. این نسخهٔ پیش‌فرض lldb را نصب می‌کند (در حال حاضر 9.0).
The other debugger available with FreeBSD is called <command>gdb</command> (<application>GNU debugger</application>). Unlike lldb, it is not installed by default on FreeBSD 12.1; to use it, <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/ports-using.html">install</link> <package>devel/gdb</package> from ports or packages. The version installed by default on FreeBSD 11.3 is old; instead, install <package>devel/gdb</package> there as well. It has quite good on-line help, as well as a set of info pages.
اشکال‌زدای دیگری که در FreeBSD هست <command>gdb</command> (<application>GNU debugger</application>) نام دارد. برخلاف lldb، به‌طور پیش‌فرض در FreeBSD 12.1 نصب نشده است؛ برای استفاده از آن، <package>devel/gdb</package> را از طریق پورت یا بسته‌ها <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/ports-using.html">نصب کنید</link>. نسخهٔ از پیش نصب‌شدهٔ موجود در FreeBSD 11.3 قدیمی است؛ در عوض، <package>devel/gdb</package> را در آنجا نیز نصب کنید. در کنار مجموعه‌ای از صفحات اطلاعات، راهنمای برخطِ بسیار خوبی نیز دارد.
Which one to use is largely a matter of taste. If familiar with one only, use that one. People familiar with neither or both but wanting to use one from inside <application>Emacs</application> will need to use <command>gdb</command> as <command>lldb</command> is unsupported by <application>Emacs</application>. Otherwise, try both and see which one you prefer.
اینکه کدام یک را استفاده کنید تا حد زیادی به سلیقهٔ شما برمی‌گردد. اگر فقط با یکی از آنها آشنا هستید، از همان استفاده کنید. اشخاصی که با هردوی آنها آشنایی دارند یا هیچکدام را نمی‌شناسند اما می‌خواهند یک کدام را از داخل <application>Emacs</application> استفاده کنند لازم است از <command>gdb</command> استفاده کنند زیرا <command>lldb</command> توسط <application>Emacs</application> پشتیبانی نمی‌شود. در غیر این صورت، هر دو را استفاده کنید و ببینید کدام را ترجیح می‌دهید.
Using lldb
استفاده از lldb
Starting lldb
راه‌اندازیِ lldb
Start up lldb by typing
lldb را با نوشتن عبارات زیر راه‌اندازی کنید
<prompt>%</prompt> <userinput>lldb -- <replaceable>progname</replaceable></userinput>
<prompt>%</prompt> <userinput>lldb -- <replaceable>progname</replaceable></userinput>
Running a Program with lldb
اجرای برنامه با lldb
Compile the program with <option>-g</option> to get the most out of using <command>lldb</command>. It will work without, but will only display the name of the function currently running, instead of the source code. If it displays a line like:
برنامه را با<option>-g</option> همگردان کنید تا بیشترین بهره را از استفادهٔ <command>lldb</command> ببرید. بدون آن نیز کار خواهد کرد، اما به‌جای کد منبع، تنها نام تابعِ در حال اجرا به شما نشان داده خواهد شد. اگر خطی مانند این را نمایش می‌دهد:
Breakpoint 1: where = temp`main, address = …
Breakpoint 1: where = temp`main, address = …
(without an indication of source code filename and line number) when setting a breakpoint, this means that the program was not compiled with <option>-g</option>.
(بدون هیچ اشاره‌ای به نام پرونده و شماره خطِ کد منبع) هنگامی‌که نقطهٔ توقف را تعیین می‌کنیم، بدان معناست که برنامه بدون <option>-g</option> همگردان شده است.
Most <command>lldb</command> commands have shorter forms that can be used instead. The longer forms are used here for clarity.
بیشتر دستورات <command>lldb</command> صورت‌های کوتاه‌تری دارند که می‌توان در عوض آنها را به‌کار برد. صورت‌های بلندتر برای شفافیت در اینجا به‌کار رفته‌اند.
At the <command>lldb</command> prompt, type <userinput>breakpoint set -n main</userinput>. This will tell the debugger not to display the preliminary set-up code in the program being run and to stop execution at the beginning of the program's code. Now type <userinput>process launch</userinput> to actually start the program— it will start at the beginning of the set-up code and then get stopped by the debugger when it calls <function>main()</function>.
در اعلانِ <command>lldb</command>، وارد کنید <userinput>breakpoint set -n main</userinput>. این به اشکال‌زدا می‌گوید که کد راه‌اندازیِ مقدماتیِ برنامهٔ در حال اجرا را نمایش ندهد و اجرا را در ابتدای کد برنامه متوقف سازد. حال بنویسید <userinput>process launch</userinput> تا برنامه را آغاز کنید— از ابتدای کدِ راه‌اندازی آغاز می‌کند و سپس زمانی‌که اشکال‌زدا <function>main()</function> را صدا می‌زند، متوقف می‌شود.
To step through the program a line at a time, type <userinput>thread step-over</userinput>. When the program gets to a function call, step into it by typing <userinput>thread step-in</userinput>. Once in a function call, return from it by typing <userinput>thread step-out</userinput> or use <userinput>up</userinput> and <userinput>down</userinput> to take a quick look at the caller.
برای آنکه به‌ازای هر خط وارد برنامه شوید، وارد کنید <userinput>thread step-over</userinput>. هنگامی‌که برنامه به یک فراخوان تابع می‌رسد، <userinput>thread step-in</userinput> را وارد کنید تا وارد آن شوید. وقتی داخل فراخوان تابع بودید، <userinput>thread step-out</userinput> را وارد کنید تا از آن خارج شوید یا از <userinput>up</userinput> و <userinput>down</userinput> استفاده کنید تا نگاهی سریع به فراخوان داشته باشید.
Here is a simple example of how to spot a mistake in a program with <command>lldb</command>. This is our program (with a deliberate mistake):
در اینجا مثالی ساده از چگونگی تشخیص اشتباه در یک برنامه به‌وسیلهٔ <command>lldb</command> آمده است. این برنامهٔ ماست (با اشتباهی عمدی):

Loading…

The standard debugger supplied with FreeBSD 12.1 is called <command>lldb</command> (<application>LLVM debugger</application>). As it is part of the standard installation for that release, there is no need to do anything special to use it. It has good command help, accessible via the <userinput>help</userinput> command, as well as <link xlink:href="https://lldb.llvm.org/">a web tutorial and documentation</link>.
اشکال‌زدای استانداردِ عرضه‌شده با FreeBSD نسخهٔ 12.1 <command>lldb</command> (<application>LLVM debugger</application>) نام دارد. نیاز به انجام کار خاصی به‌منظور استفاده از آن نیست، زیرا قسمتی از نصب استاندارد آن توزیع هست. دارای دستور کمک مناسبی است، قابل‌دسترس از طریق دستور <userinput>help</userinput>، و نیز <link xlink:href="https://lldb.llvm.org/">آموزه و مستندات تحت وب</link>.
a month ago
Browse all component changes

Glossary

English Persian
Debugger اشکال‌زدا FreeBSD Doc
Mandatory Access Control نظارت دسترسی اجباری FreeBSD Doc

Source information

Source string comment
(itstool) path: sect2/para
Labels
No labels currently set.
Source string location
book.translate.xml:1731
Source string age
a month ago
Translation file
books/fa/developers-handbook.po, string 321