LLDB(1) LLDB LLDB(1)

lldb - مستندات دیباگر LLDB

lldb [options] executable

lldb یک دیباگر نسل جدید و با کارایی بالا است. این برنامه به‌صورت مجموعه‌ای از مؤلفه‌های با قابلیت استفادهٔ مجدد ساخته شده است که به‌طور گسترده از کتابخانه‌های موجود در پروژهٔ بزرگ‌تر LLVM، مانند تجزیه‌کنندهٔ عبارت Clang و دی‌اسمبلر LLVM بهره می‌برند.

lldb دیباگر پیش‌فرض در Xcode روی macOS است و از اشکال‌زدایی C،‏ Objective-C و C++ روی رایانه‌های رومیزی، دستگاه‌های iOS و شبیه‌ساز پشتیبانی می‌کند.

تمام کدهای موجود در پروژهٔ LLDB تحت مجوز Apache 2.0 با استثنائات LLVM منتشر شده و در دسترس هستند.

به دیباگر اعلام می‌کند تا به فرایندی با نام داده‌شده متصل شود.
به دیباگر اعلام می‌کند تا به فرایندی با pid مشخص‌شده متصل شود.
نام مستعار برای --attach-name
نام مستعار برای --attach-pid
به دیباگر اعلام می‌کند قبل از متصل شدن، منتظر راه‌اندازی و اجرای فرایندی با pid یا نام مشخص‌شده بماند.
نام مستعار برای --wait-for
به دیباگر اعلام می‌کند دستورهای -s، -S، -o و -O را اجرا کرده و سپس خارج شود.
نام مستعار برای --batch
نام مستعار برای --source-on-crash
نام مستعار برای --one-line-on-crash
به دیباگر اجازه می‌دهد فایل‌های .lldbinit موجود در دایرکتوری کاری فعلی را پردازش کند، مگر آنکه --no-lldbinit داده شده باشد.
هیچ فایل '.lldbinit' را به‌طور خودکار پردازش نکند.
به دیباگر اعلام می‌کند این دستور تک‌خطی lldb را پیش از بارگذاری هر فایلی که در خط فرمان مشخص شده، اجرا کند.
در حالت دسته‌ای (batch mode)، به دیباگر اعلام می‌کند در صورت کرش کردن هدف، این دستور تک‌خطی lldb را اجرا کند.
به دیباگر اعلام می‌کند این دستور تک‌خطی lldb را پس از بارگذاری هر فایلی که در خط فرمان مشخص شده، اجرا کند.
نام مستعار برای --one-line-before-file
نام مستعار برای --one-line
نام مستعار برای --source-quietly
به دیباگر اعلام می‌کند پیش از بارگذاری هر فایلی، دستورهای lldb درون فایل داده‌شده را خوانده و اجرا کند.
در حالت دسته‌ای، به دیباگر اعلام می‌کند در صورت کرش کردن هدف، این فایلِ حاوی دستورهای lldb را اجرا کند.
به دیباگر اعلام می‌کند هنگام اجرای فایل‌ها یا دستورهای تک‌خطی ارائه‌شده در خط فرمان، دستورها را در خروجی چاپ (echo) نکند.
به دیباگر اعلام می‌کند پس از بارگذاری هر فایلی، دستورهای lldb درون فایل داده‌شده را خوانده و اجرا کند.
نام مستعار برای --source-before-file
نام مستعار برای --source
نام مستعار برای --no-lldbinit
به دیباگر اعلام می‌کند که هنگام راه‌اندازی و اجرای برنامه از معماری مشخص‌شده استفاده کند.
نام مستعار برای --arch
--capture-path <filename>
به دیباگر اعلام می‌کند که از نام فایل داده‌شده برای بازتولیدکننده (reproducer) استفاده کند.
به دیباگر اعلام می‌کند که یک بازتولیدکننده (reproducer) را ضبط کند.
به دیباگر اعلام می‌کند که از مسیر کامل به <filename> به عنوان فایل core استفاده کند.
نام مستعار برای --core
به دیباگر اعلام می‌کند که اطلاعات اضافی را برای دیباگ کردن خود چاپ کند.
نام مستعار برای --debug
به دیباگر اعلام می‌کند که فایل‌های کد منبع را با استفاده از سازوکار "ویرایشگر خارجی" میزبان باز کند.
نام مستعار برای --editor
به دیباگر اعلام می‌کند که از فایل <filename> به عنوان برنامه‌ای که باید دیباگ شود استفاده کند.
نام مستعار برای --file
اطلاعات نحوه استفاده از دیباگر LLDB را چاپ می‌کند.
نام مستعار برای --help
از رنگ‌ها استفاده نمی‌کند.
به دیباگر اعلام می‌کند که یک بازتولیدکننده (reproducer) را از <filename> بازپخش کند.
شماره نسخه فعلی دیباگر LLDB را چاپ می‌کند.
نام مستعار برای --version
نام مستعار برای --no-use-color
نام مستعار برای --repl=<flags>
زبان مورد استفاده برای REPL را انتخاب می‌کند.
برنامه lldb را در حالت REPL همراه با یک فرایند ساختگی (stub) با پرچم‌های مشخص‌شده اجرا می‌کند.
نام مستعار برای --repl-language

نام مستعار برای --script-language
یک دیکشنری json حاوی اطلاعات مربوط به مفسر زبان اسکریپت‌نویسی را چاپ می‌کند.
مسیر فایل lldb.py را برای این نسخه از lldb چاپ می‌کند.
نام مستعار برای --python-path
به دیباگر اعلام می‌کند که از زبان اسکریپت‌نویسی مشخص‌شده برای اسکریپت‌های تعریف‌شده توسط کاربر استفاده کند.

دیباگر را می‌توان در چندین حالت راه‌اندازی کرد.

ارسال یک فایل اجرایی به عنوان یک آرگومان موضعی، lldb را برای اشکال‌زدایی فایل اجرایی داده‌شده آماده می‌کند. برای جلوگیری از ابهام میان آرگومان‌های ارسالی به lldb و آرگومان‌های ارسالی به فایل اجرایی تحت اشکال‌زدایی، آرگومان‌هایی که با - آغاز می‌شوند باید پس از -- ارسال گردند.

lldb --arch x86_64 /path/to/program program argument -- --arch armv7

برای راحتی بیشتر، ارسال فایل اجرایی پس از -- نیز پشتیبانی می‌شود.

lldb --arch x86_64 -- /path/to/program program argument --arch armv7

ارسال یکی از گزینه‌های اتصال (attach) باعث می‌شود lldb بی‌درنگ به فرایند داده‌شده متصل شود.

lldb -p <pid> lldb -n <process-name>

ارسال --repl برنامه lldb را در حالت REPL راه‌اندازی می‌کند.

lldb -r

ارسال --core باعث می‌شود lldb فایل core را اشکال‌زدایی کند.

lldb -c /path/to/core

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

lldb -O 'settings set stop-disassembly-count 20' -o 'run' -o 'bt' lldb -S /source/before/file -s /source/after/file lldb -K /source/before/crash -k /source/after/crash

نکته: در حالت REPL هیچ فایلی بارگذاری نمی‌شود، بنابراین دستورهای تعیین‌شده برای اجرا پس از بارگذاری فایل (از طریق -o یا -s) نادیده گرفته خواهند شد..SH "استفاده از LLDB (USING LLDB)"

در lldb یک دستور help وجود دارد که می‌تواند برای یافتن توضیحات و مثال‌های مربوط به تمام دستورات lldb استفاده شود. برای دریافت راهنما دربارهٔ "breakpoint set"، باید عبارت "help breakpoint set" را وارد کنید.

همچنین یک دستور apropos وجود دارد که متن راهنمای تمام دستورات را برای یافتن یک عبارت مشخص جستجو می‌کند ‐‐ این قابلیت برای یافتن یک دستور بر اساس موضوع مفید است. برای نمونه، "apropos breakpoint" هر دستوری را که واژهٔ "breakpoint" در متن راهنمایش آمده باشد فهرست می‌کند.

lldb مواردی مانند تنظیمات، نام‌های مستعار و دستورات را از فایل .lldbinit می‌خواند.

ابتدا، lldb تلاش می‌کند فایل init مخصوص برنامه را بخواند که نام آن به صورت ~/.lldbinit به همراه یک "-" و نام برنامهٔ جاری است. این نام برای نسخهٔ خط فرمان lldb برابر ~/.lldbinit-lldb و برای Xcode برابر ~/.lldbinit-Xcode خواهد بود. اگر فایل init مخصوص برنامه وجود نداشته باشد، lldb به دنبال یک فایل init در دایرکتوری خانگی خواهد گشت. اگر برنامه با گزینهٔ REPL اجرا شده باشد، ابتدا به دنبال فایل پیکربندی REPL ویژهٔ زبان آن REPL می‌گردد. نام این فایل init باید به این صورت باشد: .lldbinit-<language>-repl (برای مثال .lldbinit-swift-repl). اگر این فایل وجود نداشته باشد یا lldb با REPL اجرا نشده باشد—به این معنی که نه فایل init مخصوص REPL و نه فایل init مخصوص برنامه یافت نشود—lldb به فایل سراسری ~/.lldbinit بازمی‌گردد.

در مرحلهٔ دوم، این ابزار به دنبال یک فایل .lldbinit در دایرکتوری کاری فعلی می‌گردد. به دلایل امنیتی، lldb به طور پیش‌فرض هشداری چاپ کرده و این فایل را بارگذاری (source) نمی‌کند. این رفتار را می‌توان با تغییر دادن تنظیم target.load-cwd-lldbinit عوض کرد.

برای بارگذاری همیشگی فایل .lldbinit در دایرکتوری کاری فعلی، دستور زیر را به ~/.lldbinit اضافه کنید:

settings set target.load-cwd-lldbinit true

برای اینکه فایل .lldbinit در دایرکتوری کاری فعلی هرگز بارگذاری نشود و نمایش هشدار نیز غیرفعال گردد، دستور زیر را به ~/.lldbinit اضافه کنید:

settings set target.load-cwd-lldbinit false

صفحهٔ پروژهٔ LLDB در https://lldb.llvm.org منابع گوناگونی برای کاربران lldb دارد ‐‐ صفحهٔ معادل‌های دستورات gdb/lldb در https://lldb.llvm.org/use/map.html می‌تواند به ویژه برای کاربرانی که از gdb می‌آیند بسیار مفید باشد.

پروژه LLVM

2007-2026, The LLDB Team

June 21, 2026 22