خطاها و عیبیابی
این مستندات محدودهٔ نهایی پیشانتشار آزمایشی v0.0.18 را شرح میدهند. وضعیت انتشار واقعی و فایلهای دانلود در GitHub Releases ثبت میشوند. پیامهای تشخیصی کامپایلر ممکن است در طول توسعهٔ آزمایشی تغییر کنند. هنگام گزارش مشکل، نسخهٔ CLI، شناسهٔ Git commit، مسیر اجرا، فرمان کامل و کد منبع حداقلی را درج کنید.
شناسایی فایل اجرایی Ku
بخشی با عنوان «شناسایی فایل اجرایی Ku»ku --versionku -hku check hello.kuاگر ku پیدا نمیشود، فایل اجرایی را از پوشهٔ استخراجشده فراخوانی کنید. در Windows از ku.exe استفاده کنید. اگر ساخت پیشفرض Rust یا کتابخانههای پیوند را ندارد، نیازمندیهای نصب را بررسی کنید و بهجای کپی کردن تنها CLI، چیدمان کامل بایگانی را حفظ کنید.
خواندن پیامهای تشخیصی
بخشی با عنوان «خواندن پیامهای تشخیصی»بررسی عادی، فایل، محل کد، بخش مربوط و راهنمای اصلاح موجود را گزارش میکند. یکپارچهسازی ابزارها میتواند از این فرمان استفاده کند:
ku check --json hello.kuخروجی JSON Lines است؛ هر خط یک پیام تشخیصی دارد. فیلدها شامل level، code، message، file، line، column، endLine، endColumn، notes و helps هستند. موفقیت خروجی ندارد؛ نبود خروجی JSON به معنی اجرا نشدن بررسی نیست.
| تشخیص | علت رایج | اقدام |
|---|---|---|
E0105 |
استفاده از let |
متغیر را با اولین انتساب تعریف کنید |
E0302 |
شرط غیر bool در if / while |
مقایسهٔ بولی صریح بنویسید |
E0601 |
ماژول ناشناختهٔ کتابخانهٔ استاندارد | مسیر واقعی ماژول، مانند std.json، را بررسی کنید |
E0605 |
نبود واردسازی صریح لازم | ماژول را مثلاً با import fs from "std.fs" وارد کنید |
E0901 |
خواندن مقدار منتقلشده | مقدار مستقل را صریحاً تکثیر کنید یا از امانتگیری همگام پشتیبانیشده استفاده کنید |
E0913 |
پارامتر امانتگرفتهٔ ناهمگام | پارامتر مالکشده به کار ببرید؛ اگر اصل مقدار لازم است در فراخوان تکثیر کنید |
E0918 |
نوشتن &value در محل فراخوانی |
آرگومان عادی بدهید؛ امانتگیری در امضا تعریف میشود |
این جدول خلاصهٔ تشخیصهای ثبتشده است و همهٔ خطاها را فهرست نمیکند. مرجع معتبر فعلی src/error.rs است.
قرارداد خطاهای زمان اجرا جداست
بخشی با عنوان «قرارداد خطاهای زمان اجرا جداست»مقادیر domain/code در Error زمان اجرا از کدهای E کامپایلر جدا هستند. JSON نامعتبر ممکن است json/parse_error بدهد؛ کلید ناموجود شیء میتواند object/missing_key برگرداند. پس از فراخوانی شکستپذیر از ? استفاده کنید یا فیلدها را در try/catch بخوانید.
import json from "std.json"
fn main() { try { json.parse("[1,]")? } catch (error) { println(error.domain) println(error.code) println(error.message) }}این برنامهٔ آموزشی عمداً یک خطای تجزیهٔ قابل بازیابی ایجاد میکند. byte N گزارششده یک فاصلهٔ بایتی UTF-8 با شروع از صفر است. این مقدار شمارش نویسههای اطراف متن چینی یا ایموجی نیست.
رد شدن ساخت بومی
بخشی با عنوان «رد شدن ساخت بومی»موفقیت ku check تنها موفقیت بررسی بخش جلویی را ثابت میکند. C بومی و LLVM هرکدام محدودیت قابلیت دارند. اگر ساختاری صریحاً رد شد، جدول پشتیبانی را بررسی کنید. افزایش مهلت یا موفقیت در مسیر دیگر، مسیر پشتیبانینشده را تأیید نمیکند.
ku build --native file.ku بدون -o فقط C مینویسد. برای کامپایل و پیوند فایل اجرایی از ku build --backend c file.ku استفاده کنید و زنجیرهابزار C مقصد را نصب کنید.
خطاهای پایگاه دادهٔ execution_unknown و execution_completed_without_result نباید باعث اجرای مجدد خودکار شوند. شواهد درخواست و عملیات تجاری را حفظ کنید و ابتدا وضعیت واقعی اجرا را مشخص کنید. بررسی وبسایت محلی به اتصال پایگاه دادهٔ محیط عملیاتی نیاز ندارد.
برای جزئیات بیشتر راهنمای تشخیص مخزن را ببینید.