انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: shahrokh_ddf در 29 آبان 1394، 06:26 بظ
-
سلام
نمیدونم سوالم بی مورد هست یا نه
یه برنامه ی c++ دارم که توی ویندوز و با VS2015 هیچ اروری نمیده
ولی وقتی میخام تو اوبونتو چه روی ترمینال با g++ یا توی codeblocks اجراش کنم ارور میده
نظرتون چیه؟
-
همین امروز این خطا رو برنامه ای که با سی نوشته بودم داد و بعد متوجه شدم مشکل از کدم هست.
حالا دو حالت وجود داره:اشکال از کده،اشکال از کامپایلره.
کدت رو چک کن و اگه درست نشد اینجا بزارش.
-
همین امروز این خطا رو برنامه ای که با سی نوشته بودم داد و بعد متوجه شدم مشکل از کدم هست.
حالا دو حالت وجود داره:اشکال از کده،اشکال از کامپایلره.
کدت رو چک کن و اگه درست نشد اینجا بزارش.
اخه تو ویندوز ارور نمیده!!یعنی کد مشکل داره و ویندوز نمیفهمه؟
-
کد رو بذارید تا ببینیم چی به چیه، یا حداقل خودتون دیباگ کنید ببینید تو کدوم خط این ارور رو میگیرید.
با این اطلاعاتی که شما دادید یه جواب گنگ مثله
حالا دو حالت وجود داره:اشکال از کده،اشکال از کامپایلره
رو میگیرید
-
seg fault رو خیلی وقته که ندیده بودم :)
البته مشخص نکردی که موقع کامپایل seg fault می ده یا موقع اجرا؟
بنا به تجربه ی شخصی به احتمال زیاد مشکل از کدت هست! ویژوال استدیو کدوم چیزش مثل آدمه که اینجور کارهاش بخواهد مثل آدم باشه! ولی جدای از شوخی رفتار ویژوال استادیو با خیلی از کمپایلر های آزاد فرق می کنه (یک سازمانی هست که استانداردهای c++ رو تعیین می کنه ولی خب هرکی کار خودش رو میکنه-البته توی نرم افزار آزاد استاندارد ها بیشتر رعایت می شه). گاهی وقت ها ممکنه اگر که منابع سیستم ات تموم بشه وسط کامپایل seg fault بده البته کد ات باید خیلی بزرگ باشه مثلا من وقتی می خواستم که KDE4 رو با کامپیوتر پنتیوم۴ و ۵۱۲ مگ رم در داخل خود KDE4 کامپایل کنم این segfault می یومد.
کدت رو بزار تا ببینیم
-
ببخشید مشکل جوابم چی بود؟
-
این ارور دلیلهای مختلفی میتونه داشته باشه ولی همه علتها به memory ختم میشه
مشکل overflow ، دسترسی به حافظه فقط خواندنی و ....
کد رو باید دید. main رو چک کنید که ارگومان درستی بگیره و قاعده نوشتاری اش رو حفظ کرده باشید. و همین طور نحوه خواندن ورودی رو چک کنید
احتمال هم داره که برنامه ات ورودی میخونه ولی بهش هنگام اجرا ورودی لازم رو پاس نمیکنی و توی ویژوال استادیو ممکنه به صورت پیش فرض خودش ورودی بده! نحوه کست کردن هم دقت کن که چیزی رو نابجا کست نکرده باشی
اینها همش احتماله و این رفتارها هم باعث میشه این ارور پدیدار بشه ، ولی در کل باید کد بررسی بشه
-
کدی که نوشتی میخواد به یه بخش از مموری دسترسی داشته باشه، اما اجازهش رو نداره.
اگر میتونی کدت رو بذار.
-
ببخشید مشکل جوابم چی بود؟
هیچی بابا چرا ناراحت میشی منظورش اینه چون سوال گنگه جواب هم کلیه نمیتونه درست مشکل رو برطرف کنه ، فقط اشاره به یه کلیت میکنه ;)
اخه تو ویندوز ارور نمیده!!یعنی کد مشکل داره و ویندوز نمیفهمه؟
منم فکر میکنم مشکل از منابع حافظهات باشه ، هنوز هم که کد رو نذاشتی بررسی شه :o
-
دوستان شرمنده
که دیر جواب دادم
یه مشکلات دیگه ای بود که باید برطرف میشد
کد رو ضمیمه میکنم و پیشاپیش از کمک و توجه تون ممنونم
-
ضمیمه ی فایل نداره اینجا؟
-
یکبار دیگه وقتی کدم رو با سی مینوشتم همین خطا پیش اومد که دوباره با درست کردن کد حل شد.
-
ضمیمه ی فایل نداره اینجا؟
توی صفحه ارسال، روی لینک انتخابهای اختیاری بیشتر کلیک کن، فرم انتخاب فایل ظاهر میشه.
_______________________
یکبار دیگه وقتی کدم رو با سی مینوشتم همین خطا پیش اومد که دوباره با درست کردن کد حل شد.
جدّا؟!
دوست من لطفا اینجا رو با Twitter اشتباه نگیر.
-
اغلب کاربران ویندوزی داخل ویندوز از سرآیند های غیر استاندارد استفاده میکنند ، این مشکل شما هم شاید مربوط به همین نکته باشه .
متن خطا رو اینجا بگذارید .
-
کد رو نذاشتی ولی
ببین در کل کامپایلر های g++ و VS رفتارهای متفاوتی دارند (نمیخوام این بحث رو بکنم که کدوم استاندارد هست و ...)
یه مثال خیلی ساده میزنم که با g++ بدون مشکل کامپایل میشه ولی داخل ویندوز پیغام خطا بهت میده
#include <iostream>
using namespace std;
int main () {
cout << "Hello World!\n";
}
ولی وقتی به این شکل تغییرش میدی در ویندوز هم بدون مشکل اجرا میشه
#include <iostream>
using namespace std;
int main () {
cout << "Hello World!\n";
return 0;
}
با یه return 0 ساده مشکل حل شد!
باید مستندات کامپایلر رو مطالعه کنی گاهی و سعی کنی از header های مناسب استفاده کنی و ...
-
https://www.dropbox.com/s/a5637ry52hzsed7/Source.cpp?dl=0
توی صفحه ارسال، روی لینک انتخابهای اختیاری بیشتر کلیک کن، فرم انتخاب فایل ظاهر میشه.
_______________________
پیدا نکردم چنین چیزی ولی خب با دراپ باکس شیرش کردم
-
اغلب کاربران ویندوزی داخل ویندوز از سرآیند های غیر استاندارد استفاده میکنند ، این مشکل شما هم شاید مربوط به همین نکته باشه .
متن خطا رو اینجا بگذارید .
Segmentation fault (core dumped)
-
جست و جو هم کردید قبل از ایجاد تاپیک ؟
https://www.google.com/?gws_rd=ssl#q=Segmentation+fault+%28core+dumped%29+Problem+
http://stackoverflow.com/questions/19641597/what-is-segmentation-fault-core-dumped
-
مشکل رو پیدا کردم
از دخیره کردن نتایج تو فایل تکست ایراد میگیره ](*,)