'সিগিল' সিগন্যালের কারণ কী?


92

আমি এনডিকে এবং জিসিসি ব্যবহার করে অ্যান্ড্রয়েডে কিছু সি ++ কোড পোর্ট করছি। কোডটি মূলত চলমান। এক পর্যায়ে, অ্যালিপসে ডিবাগ করার সময়, কল

Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory;

এই ত্রুটির কারণ:

Thread [1] (Suspended: Signal 'SIGILL' received. Description: Illegal instruction.) 
    1 <symbol is not available> 0x812feb44

ওটার মানে কি? সংকলকটি কোনও কারণে অবৈধ কোড উত্পন্ন করেছে? কনস্ট্রাক্টরটিতে আমার একটি ব্রেকপয়েন্ট রয়েছে (যা কিছুই করে না) এবং এটি আঘাত হানে না। আমি ইতিমধ্যে একটি সম্পূর্ণ পুনর্নির্মাণ কাজ করেছি।

এই সমস্যাটির জন্য আমি কী ভুল করতে পারি?

উত্তর:


27

এর অর্থ সিপিইউ এমন কোনও নির্দেশিকা কার্যকর করতে চেষ্টা করেছিল যা এটি বোঝেনি। এটি আমার অনুমানযুক্ত দুর্নীতির কারণে হতে পারে বা এটি ভুল স্থাপত্যের জন্য সংকলন করা হয়েছে (এই ক্ষেত্রে আমি ভেবেছিলাম যে ও / এস নির্বাহী চালানো অস্বীকার করবে)। মূল সমস্যাটি কী তা সম্পূর্ণরূপে নিশ্চিত নয়।


24
একটি অবৈধ নির্দেশ কার্যকর করার আরেকটি কারণ প্রোগ্রামে নয় এমন একটি ঠিকানায় ঝাঁপিয়ে দেওয়া।
পল নাথান

অদ্ভুত, আমি যখন পেয়েছিলাম যখন আমি ঝনঝনির সাথে সংকলন করেছি, তবে এটি জিসিসির সাথে ভাল কাজ করেছে
পোস্ট সেল্ফ

22

এটি কিছু অ-ইনিশিয়ালাইজড ফাংশন পয়েন্টার হতে পারে, বিশেষত যদি আপনি মেমোরিটিকে দূষিত করে থাকেন (তবে অবৈধ বস্তুগুলিতে সি ++ খারাপ পয়েন্টারগুলির বোগাস ভেটেবল এটি দিতে পারে)।

BTW gdbwatchpoints & ট্রেস, এবং এছাড়াও Valgrind ধরনের বিষয় ডিবাগ উপযোগী হতে পারে (যদি পাওয়া যায়)। অথবা কিছু ঠিকানা স্যানিটাইজার


আমার জন্য, আমি কোনও ক্রিয়াকলাপ থেকে কোনও মান ফিরিয়ে দিচ্ছিলাম না যা কোনও ইনট ফেরত দেওয়ার কথা ছিল। তাই এই উত্তর কিছুটা সম্পর্কিত। কীভাবে এটি সঙ্কলন করতে পারে তা ধারণা নেই।
ক্রিস ওয়াটস

11

নিশ্চিত করুন যে অকার্যকর রিটার্ন টাইপের সমস্ত ফাংশনের একটি returnবিবৃতি রয়েছে।

কিছু সংকলক স্বয়ংক্রিয়ভাবে একটি ডিফল্ট রিটার্ন মান সরবরাহ করে, অন্যরা রিটার্ন মান ব্যতীত কোনও ফাংশন ছেড়ে যাওয়ার চেষ্টা করার সময় রানটাইমে একটি সিগিল বা সিগট্রাপ প্রেরণ করবে।


সাইনিল (কিউটি + অ্যান্ড্রয়েড) এর পিছনে কোন কারণটি অনুসন্ধান করতে গিয়েছিলাম সে সম্পর্কে আপনার কোনও ধারণা নেই কেবল কোনও ফাংশনে (আপনার জবাব দ্বারা অনুপ্রাণিত) অনুপস্থিত রিটার্ন স্টেটমেন্ট খুঁজে পেতে। ধন্যবাদ.
ভেগা 4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.