PDA

View Full Version : مبتدی: مشکل در trace کردن و گذاشتن BreakPoint برنامه در حالت debug



masoode
چهارشنبه 08 اردیبهشت 1395, 05:34 صبح
140147
سلام
من مدتیه که از دلفی 7 به XE8 کوچ کرده ام. خیلی خوبه و راضی ام اما بعضی چیزاش را نمی فهمم!
در این مورد که عکسش را گذاشتم می خواهم Break Point بگذارم، بعد از زدن F9 روی دایره قرمز ضربدر میخوره و اصلا روی هیچ نقطه ای توقف نمی کنه!
علتش چیه؟ و چطوری باید رفعش کرد؟

یوسف زالی
چهارشنبه 08 اردیبهشت 1395, 06:24 صبح
سلام.
روی خط پایین ترش بگذارید.
احتمالا از متغیر استفاده نکردید کامپایلر هم eliminate کرده.

masoode
چهارشنبه 08 اردیبهشت 1395, 06:30 صبح
کلا هر جایی از برنامه Breakpoint می گذارم همین اتفاق می افته!
140150

Mahmood_M
چهارشنبه 08 اردیبهشت 1395, 07:45 صبح
Procedure های Initialize و یا load_tblLimits رو کجا تعریف کردید ؟
در جایی غیر از Procedure های ساخته شده بذارید، مثلا در Event های استاندارد، ببینید باز هم مشکل وجود داره یا نه

masoode
چهارشنبه 08 اردیبهشت 1395, 11:17 صبح
مهندس من خیلی هم مبتدی نیستم!
فکر کنم این اتفاق مربوط به اضافه شدن دو حالت "Release" و "Debug" در ورژن جدید باشه.
برنامه من یک برنامه نسبتا سنگینه و بدون مشکل اساسی کار می کنه. تا روز قبل هم BreakPoint ها کار می کرد. روز قبل یک نسخه برای ارسال به مشتری آماده می کردم و Build را روی حالت Release گذاشتم. حالا که دوباره می خوام تغییرات بدم این مشکل به وجود آمده. دوباره هم همون طور که توی عکس هم معلومه روی Debug گذاشتم اما مشکل حل نشد!

Mahmood_M
چهارشنبه 08 اردیبهشت 1395, 14:08 عصر
به منوی Project > Options برید و بررسی کنبد که تنطیمات قسمت Compiling و Linking برای هر دو حالت Debug و Release روی مقادیر پیش فرض باشن، یعنی مقدارشون حالت Bold شده نداشته باشه
بعد روی گزینه Debug توی قسمت Configuration ( سمت راست IDE ) راست کلیک کنید و گزینه Clean رو بزنید تا فایلهای DCU قدیمی پاک بشه
بعد یک بار در حالت Debug پروژه رو Build کنید
اگر این موارد بررسی بشه به احتمال زیاد مشکل حل خواهد شد

masoode
پنج شنبه 09 اردیبهشت 1395, 03:34 صبح
با Clean و build مشکل حل شد.:تشویق:
علت به وجود آمدن این مشکل معلومه؟

developing
سه شنبه 04 خرداد 1395, 11:09 صبح
باسلام

در حالت پیش فرض دلفی، اگر برنامه‌ای در حالت انتشار ( Release Mode) کامپایل شود به خاطر اینکه کامپایلر راهنماهای خطایابی و استثنا را به کد اجرایی نمی‌چسباند بنابراین نقطه توقف (Break Point) هم درون کد اجرایی تولید شده، وجود ندارد.
اما اگر حالت پروژه را به ساخت (Build) تغییر دهید تمام امکانات اشکالزدایی (از جمله نقطه توقف) هم درون کد اجرایی تولید شده، وجود دارد.

به همین خاطر است که حجم فایل اجرایی در حالت انتشار بسیار کمتر از حالت ساخت است.

خب مشکل زمانی بوجود می‌آید که شما در حالت انتشار برنامه‌ای را کامپایل می‌کنید در اینصورت تمام نقاط توقف شما غیر فعال هستند و روی آن‌ها ضربدر می‌خورد. برای رفع آن شما باید حالت پروژه را به ساخت تبدیل کنید.

در پنجره Project Manager بر روی دکمه بعلاوه (+) کنار گزینه‌ی Build Configurations کلیک کنید تا تنظیمات ساخت برنامه مشخص گردد، در اینجا هر کدام از گزینه‌های Release و یا Debug برجسته (Bold) باشند نشان دهنده‌ی این است که پروژه‌ی شما در این حالت کامپایل می‌گردد. کافی است در اینجا بر روی گزینه Debug دوبار کلیک کنید.

نکته: البته برخی از مواقع، با انجام دادن کارهای بالا باز هم مشکل پابرجاست. در اینصورت باید یک بار پروژه را پاک (Clean) کنید.
برای این کار در پنجره Project Manager بر روی نام پروژه‌ی خود راست کلیک کرده و از منوی باز شده گزینه‌ی Clean (سومین گزینه) را انتخاب کنید. (البته قبل از پاک کردن پروژه حالت آنرا بر روی ساخت (Build) قرار دهید.)
از اینجا به بعد با کامپایل کردن نقاط توقف شما به درستی کار خواهند نمود.

توجه: این کارها در زمانی جواب می‌دهد که پیش‌فرض‌های دلفی در بخش‌های Linking و Compiling را تغییر نداده باشید.
تنظیمات Compiling و Linking یک بحث مفصل است که اکنون فرصت ندارم. ان‌شاءالله در آینده این بحث افزوده خواهد شد.

البته خواندن مقاله های زیر خالی از لطف نیست:
Compiling Delphi XE Applications With Debug Information (https://support.smartbear.com/viewarticle/74832/)

Build Configurations Overview (http://docwiki.embarcadero.com/RADStudio/Seattle/en/Build_Configurations_Overview)

اصلاحیه:
در متن بالا
هر کجا کلمه «ساخت» هست باید به «اشکالزدایی»
و هر کجا «Build» آورده شده باید به «Debug» تبدیل شود.

در ضمن این یک راهنمایی کلی در رابطه با این مشکل، برای افراد مبتدی بود.

ببخشید اگر که کارایی نداره.
با تشکر از مدیر بخش جناب محمود خان.

Mahmood_M
سه شنبه 04 خرداد 1395, 12:10 عصر
لطفا قبل از پاسخ دادن به تاپیک سایر پستهای تاپیک رو بخونید

در حالت پیش فرض دلفی، اگر برنامه‌ای در حالت انتشار ( Release Mode) کامپایل شود به خاطر اینکه کامپایلر راهنماهای خطایابی و استثنا را به کد اجرایی نمی‌چسباند بنابراین نقطه توقف (Break Point) هم درون کد اجرایی تولید شده، وجود ندارد.
اما اگر حالت پروژه را به ساخت (Build) تغییر دهید تمام امکانات اشکالزدایی (از جمله نقطه توقف) هم درون کد اجرایی تولید شده، وجود دارد.
حالت ساخت برای پروژه وجود نداره، در کنار حالت Release ، حالت Debug وجود داره نه حالت Build

خب مشکل زمانی بوجود می‌آید که شما در حالت انتشار برنامه‌ای را کامپایل می‌کنید در اینصورت تمام نقاط توقف شما غیر فعال هستند و روی آن‌ها ضربدر می‌خورد. برای رفع آن شما باید حالت پروژه را به ساخت تبدیل کنید.

در پنجره Project Manager بر روی دکمه بعلاوه (+) کنار گزینه‌ی Build Configurations کلیک کنید تا تنظیمات ساخت برنامه مشخص گردد، در اینجا هر کدام از گزینه‌های Release و یا Debug برجسته (Bold) باشند نشان دهنده‌ی این است که پروژه‌ی شما در این حالت کامپایل می‌گردد. کافی است در اینجا بر روی گزینه Debug دوبار کلیک کنید.
مشکل در حالت Release بوجود نیومده، بلکه تنظیمات بر روی حالت Debug بوده و باز هم Break Point اعمال نمیشده

لطفا قبل از ارسال پاسخ، مطالب تاپیک رو از ابتدا بخونید

meysam_212
سه شنبه 04 خرداد 1395, 22:56 عصر
شاید کش کرده بوده، منم این مشکل رو داشتم، ولی درکل توی تنظیمات گزینه ای داره که که بریک پوینت رو غیر فعال میکنه