دیباگ در کیوت



  • سلام
    من قبلاْ توی اکلیپس کد میزدم و اونجا وقتی دیباگ میکردم میتونستم مقدار همه ی متغیرها رو توی هر خط اجرای برنامه ببینم و دنبال کنم
    توی کیوت تازه کارم، با کیوت کریتور چطوری این کار رو میشه کرد؟



  • p{direction:rtl; text-align:right}. سلام. تصویر رو نگاه بنداز
    !http://img4up.com/up2/01034116025661862813.png(debug)!





  • p{direction:rtl; text-align:right}. گزینه debug را انتخاب کنید
    !http://up98.org/upload/server1/01/z/1y7nmoc3muhj855ht6a7.png(debug)!



  • ممنون مهدی جان

    مشکل حل شد ولی فقط متغیرهای توی فایل اصلی رو تریس می کنه و متغیرهای توی بقیه فایل ها رو نشون نمیده
    من برای دیالوگ یه کلاس تعریف کردم که میخوام متغیرهای اون هم بررسی بشن

    مثلا توی برنامه زیر می خوام متغیرهای توی mainwindow.h هم trace بشن

    @#include <QtGui/QApplication>
    #include "mainwindow.h"

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec&#40;&#41;;
    

    }@

    راستی چطوری اینجا راست به چپ مینویسی؟



  • p{direction:rtl; text-align:right}. فقط کافیه در خط مورد نظرتون یک Breakpoint تعریف کنید

    p{direction:rtl; text-align:right}. برای راست به چپ از کد زیر استفاده کنید

    p{direction:rtl; text-align:right}.



  • [right_aligned]
    این رو ببین مهدی جان
    برنامه کامل دیباگ شده ولی هنوز خبری از متغیرها نیست

    !http://up98.org/upload/server1/01/a/vdypvcosu103tu04x.png(a)!



  • p{direction:rtl; text-align:right}. دیباگر روی Breakpoint هایی که مشخص میکنید متوقف میشه؟

    p{direction:rtl; text-align:right}. روی علامت مثلث سبز رنگ کلیک میکنی یا روی علامت مثلث سبز رنگی که روی اون شکل یک حشره است؟
    حدسم اینه که شما روی مثلث سبز رنگ کلیک میکنید



  • p{direction:rtl; text-align:right}. توی تصویر بالایی دیباگ در حال اجرا نیست. چون اصلا تو پنجرهٔ دیباگ ترد خالیه. جایی هم نایستاده. همون‌طور که مهدی گفت شما برنامه رو اجرا کردید دیباگ‌ش نکردید.



  • رو میزنم همون حشره دارهStart Debuggingنه من دکمه

    ها هم دایره های قرمز رنگ میشن ولی دیباگر روی اونا متوقف نمیشهBreakpoint



  • p{direction:rtl; text-align:right}. کلن دیباگر نصب کردی؟ کامپایلرت چیه؟



  • کامپایلرم جی سی سی ه
    توی فدورا هم کار میکنم
    تمام بسته های کیوت رو هم نصب کردم



  • p{direction:rtl; text-align:right}. به مسیر زیر برو و مطمئن شو که دیباگر نصبه

    ،Tools -> Options... -> Build & Run -> Tool Chains





  • p{direction:rtl; text-align:right}. از لیست Tool Chains کامپایلر خودت رو انتخاب کن
    !http://up98.org/upload/server1/01/a/ka4yv0ly3flrz4iau17.png(check_debugger)!



  • p{direction:rtl; text-align:right}. در حالت کلی دو مدل باینری داریم. باینری‌های نهایی (Release) و باینری‌های دیباگ. دیباگ‌ها حجمشون خیلی بیشتره. چون اطلاعات مربوط به کد رو نگه می‌دارن.
    وقتی یک بار برنامه رو در حالت Release کامپایل کنی، برای اجرای دیباگ، باید یک بار clean کنی تمام object ها و باینری‌های نهایی (در لینوکس فایل‌های .o) پاک بشن و دوباره به‌شکل دیباگ ساخته بشن. در غیر این صورت نمیشه باینری نهایی رو تریس کرد.
    جدای از همهٔ این‌ها در حالت کلی برای دیباگ کردن هر برنامه‌ای (چه کیوت چه معمولی) باید GDB (GNU Debugger) روی سیستم نصب باشه. دو پست قبل، دوتا بالاتر از ToolChain قسمت دیباگ هست. اونجا رو نگاه کن...





  • رو امتحان میکنم ببینم چی میشه clean



  • آقا دستتون درست
    درست شد مشکل از همون clean نکردن بود

    فقط یه چیز دیگه برای دیباگ خط به خط حتماْ باید برای همه ی خط های برنامه breakpoint تعریف کنم؟

    این کد رو کجا بذارم که کار کنه؟
    p{direction:rtl; text-align:right}.



  • p{direction:rtl; text-align:right}. دیباگ بر شما مبارک!

    ُStep Into
    !http://up98.org/upload/server1/01/a/ibr7v8qeavc8ideqpo3z.png(Step Into)!

    p{direction:rtl; text-align:right}. اون کد رو هم در همون خطی که راست به چپ میخوای بنویسی درج کن



  • p{direction:rtl; text-align:right}.مهدی جان ممنون



  • p{direction:rtl; text-align:right}. خواهش میکنم
    برای راست به چپ بین اون کد و جمله ی فارسیت باید یک space بگذاری



  • p{direction:rtl; text-align:right}. مهدی جان بازم ممنون


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.