ابزار های عیب برداری

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

چوبداران

اولین راه استفاده از ثبت کننده های زمان اجرا است. شروع از jami با -d به ثبت توسط deamon (یا بخش حل مشکلات در تنظیمات عمومی) امکان پذیر می شود. از آنجا که Jami چندین کتابخانه را استفاده می کند، ما تمام ثبت نام ها را به طور پیش فرض فعال نمی کنیم. اما شما می توانید برخی از متغیرهای محیط را برای نشان دادن آن عبور کنید:

  • SIPLOGLEVEL=5 برای فعال کردن سوابق از PJSIP.

  • DHTLOGLEVEL=5 برای فعال کردن دفترچه ها از OpenDHT.

  • AVLOGLEVEL=50 برای فعال کردن سوابق از ffmpeg.

بازیافت کننده

به طور کلی IDE شما دارای یک debugger داخلی است. در غیر این صورت، شما می توانید از gdb به عنوان مثال برای اضافه کردن نقاط شکستگی، عقب نشینی از تصادفات، ساختارهای داخلی چاپ، و غیره استفاده کنید. شما باید پروژه را در حالت DEBUG مرتب کنید تا نمادهای دیبگ را بدست آورید.

چند دستور مفيد:

  • b file.cpp:line - یک نقطه شکافی اضافه کنید (file.cpp:line می تواند با یک نماد جایگزین شود)

  • t a a bt - (درد تمام ردیابی عقب را اعمال می کند) برای گرفتن تمام ردیابی عقب

  • Ctrl + X / A - عبور در نمای گرافیکی

  • p - یک مقدار داخلی چاپ کنید.

پروفایل ها

اشکال زدایی ها مفید هستند، اما مصرف حافظه / فعالیت شبکه / استفاده از CPU را در زمان واقعی نشان نمی دهند. برای این کار، می توانید از پروفایلر داخلی در IDE خود (به عنوان مثال از Android Studio یا Qt Creator / Visual Studio) استفاده کنید.

آدرس سینیتیزر

این می تواند برای تشخیص لکه ها، تصادف ها، وقفه های احتمالی در زمان اجرا مفید باشد. برای این کار، می توانید دیمون را با CXXFLAGS+="-fsanitize=address" مرتب کنید. پرچم های دیگر مانند tsan ممکن است مفید باشند.

والگرند/کالگرند

Valgrind یک ابزار برای نظارت بر تخصیصات، استفاده از پردازنده و موارد دیگر است و می تواند از طریق: valgrind --tool=callgrind./jami -d استفاده شود. این امر برنامه را بسیار کند می کند اما می تواند گزارش های مفید در مورد تخصیص حافظه / استفاده از عملکرد را ارائه دهد (KCacheGrind می تواند برای خواندن گزارش ها استفاده شود).

آزمایشات

Daemon دارای آزمایشات و پوشش های بسیاری است. اگر Daemon در حالت جامد ساخته شده باشد (نمادهای خصوصی دیگر در دسترس نخواهد بود) ، اضافه کردن آزمایش های جدید می تواند به تولید اشکال، حل اشکال و جلوگیری از هر گونه بازگشت کمک کند. (بخش daemon/tests/unitTests`)

مامور

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

LTTng

در نهایت، ردیابی نقاط می تواند ایجاد و تجزیه و تحلیل شود. daemon/tools/trace اسناد و برخی نمونه ها را ارائه می دهد. مزیت LTTng این است که سریعتر از لوگ است، می تواند توسط رویدادهای سیستم ایجاد شود و می تواند با ردیابی نقاط موجود در هسته استفاده شود (تا بتواند با ردیابی نقاط از رابط های شبکه استفاده شود).