PDA

View Full Version : حرفه ای: اجرا نشدن بدون دلیل برنامه



shobair
شنبه 22 تیر 1392, 12:03 عصر
سلام

یک مشکل بسیار جالب که واقعاً نمیدونم چرا اتفاق می افته دارم:
یک برنامه نوشته شده در دلفی 6 که از هیچ کامپوننت اضافی هم استفاده نشده و تحت شبه کار میکنه و تحت ویندوز XP اجرا میشه. روی یک سیستم به مدت چندین ماه کار کرده ولی ناگهان و بدون دلیل دیگه کار نمیکنه. یعنی اصلاً اجرا نمیشه، با دابل کلیک روی اون هیچ اتفاقی نمیفته، هیچ خطایی، هیچ علامتی، انگار اصلاً نیست! ویندوز رو عوض کردم، 3 روز کار کرد، از صبح روز چهارم دوباره کار نکرد. کاربر جدید ویندور ساختم، 2 روز دیگه کار کرد دوباره از کار افتاد. کل سیستم رو عوض کردم و یک سیستم دیگه گذاشتم، دوباره 4 روز کار کرد از کار افتاد! سیستم ها آنتی ویروس داشتند که حذفش کردم، ولی باز تکرار شد. هیچ آلودگی به ویروسی هم وجود نداره. این اتفاق بدون هیچ دلیلی و بدون هیچ هشدار یا خطائی می افته. تنها نکته مشترک بین کامپیوترها موس و کیبورد و مونیتورشونه و البته مودم ADSL.

آیا کسی تا بحال چنین چیزی دیده؟ آیا توضیحی براش وجود داره؟

شبیر

یوسف زالی
شنبه 22 تیر 1392, 12:51 عصر
سلام.
من گاهی از این دست مشکل ها می گیرم که دلیلش رو بعد از هزار روز تلاش فهمیدم آپدیت شدن ویندوز باعث می شه بعضی از DLL هاش بازی در بیارن.
در خصوص دیتابیس هم از این دست مشکلات داشتم، روی بعضی از سیستم ها برنامه بدون دلیل اصلا باز نمی شد!
یعنی باز می شد و قبل از بار گذاشتن برنامه پرت می شد بیرون.
فهمیدم دلیلش استفاده از یک تابع هست که در بعضی از ویندوز ها سبب اشکال اکسترنال می شه. این ارور ها رو نمی تونید هندل کنید!!
یعنی با بلاک try هم نمی تونید بگیریدش.
بهترین راهش اینه که دلفی رو نصب کنید روی اون سیستم و اونجا در مود دیباگ اشکال رو پیگیری کنید ببینید سر کدوم خط می پره بیرون.
اما از جایی که ممکنه نتونید این کار رو کنید یک پیشنهاد دیگه دارم:
سر هر کدوم از کال کردن ها یا متد ها یا دستورات تا قبل از لود شدن فرم اصلی، یک لاگ در یک ini ثبت کنید. در سیستمی که باز نمی شه فایل رو بخونید ببینید تا کجا بدون مشکل ران شده،
بعد از چند بار آزمون و خطا می تونید دقیقا سر خطی بایستید که مشکل داره، و براش چاره ای بیندیشید.

نکته: اگر برای برنامتون قفل نرم افزاری نوشتید که اساسش چک کردن DLL های ویندوزه، بی خیالش بشید.

shobair
شنبه 22 تیر 1392, 13:58 عصر
سلام.
من گاهی از این دست مشکل ها می گیرم که دلیلش رو بعد از هزار روز تلاش فهمیدم آپدیت شدن ویندوز باعث می شه بعضی از DLL هاش بازی در بیارن.
در خصوص دیتابیس هم از این دست مشکلات داشتم، روی بعضی از سیستم ها برنامه بدون دلیل اصلا باز نمی شد!
یعنی باز می شد و قبل از بار گذاشتن برنامه پرت می شد بیرون.
فهمیدم دلیلش استفاده از یک تابع هست که در بعضی از ویندوز ها سبب اشکال اکسترنال می شه. این ارور ها رو نمی تونید هندل کنید!!
یعنی با بلاک try هم نمی تونید بگیریدش.
بهترین راهش اینه که دلفی رو نصب کنید روی اون سیستم و اونجا در مود دیباگ اشکال رو پیگیری کنید ببینید سر کدوم خط می پره بیرون.
اما از جایی که ممکنه نتونید این کار رو کنید یک پیشنهاد دیگه دارم:
سر هر کدوم از کال کردن ها یا متد ها یا دستورات تا قبل از لود شدن فرم اصلی، یک لاگ در یک ini ثبت کنید. در سیستمی که باز نمی شه فایل رو بخونید ببینید تا کجا بدون مشکل ران شده،
بعد از چند بار آزمون و خطا می تونید دقیقا سر خطی بایستید که مشکل داره، و براش چاره ای بیندیشید.

نکته: اگر برای برنامتون قفل نرم افزاری نوشتید که اساسش چک کردن DLL های ویندوزه، بی خیالش بشید.

سلام

ممنون راهنمائی خوبی بود. برنامه من از قفل استفاده نمیکنه و اصلاً از هیچ کامپوننت خاصی هم استفاده نمیکنه! ضمن اینکه اصلاً اجرا نمیشه که بسته بشه و در واقع هیچ رویدادی اجرا نمیشه. حتی یک برنامه دیگه با ساختار مشابه هم هست که بدون مشکل کار میکنه. تنها کاری که هنوز نکردم نگاه کردن به event log ویندوز هست که شاید کمک کنه. ویندوز هم آپدیت نمیشه. متاسفانه اصلاً هیچ توجیه منطقی نداره!

شبیر

یوسف زالی
شنبه 22 تیر 1392, 15:13 عصر
برنامه باز می شه و سریع بسته می شه (احتمالا)
یوزر چیزی نمی بینه چون قبل از ساخت فرم ها بسته می شه.
در خود پروژه وقتی به Application.Run می رسه اتفاقاتی می افته.
این اتفاقات رو لاگ کنید.

firststep
شنبه 22 تیر 1392, 17:51 عصر
سلام
از توش شبکه چی میگیره می فرسته
ایا توی روجتون هندل مسیج کردین؟

shobair
چهارشنبه 26 تیر 1392, 09:48 صبح
سلام
از توش شبکه چی میگیره می فرسته
ایا توی روجتون هندل مسیج کردین؟

سلام

اصلا کار به اینجا نمیرسه. حتی توی event های ویندوز هم Log نمیشه. هیچ رویدادی هم اجرا نمیشه. با شبکه کار داره ولی نه بلافاصله بعد از اجرا شدن. جالبه که وقتی یک یوزر جدید میسازم تا 4 5 روز کار میکنه، دوباره از کار میوفته!

شبیر