AVAudioPlayer ডিবাগ মোডে ব্রেকপয়েন্ট নিক্ষেপ করে


108

আমি যখনই অ্যাপটি লোড করি তখনই এটি থেমে যায় যেন আমি এই লাইনে একটি ব্রেকপয়েন্ট স্থাপন করেছি:

self.audioPlayer = 
 [[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName] 
                                error:&outError] autorelease];

এই লাইনের কাছাকাছি কোনও ব্রেকপয়েন্ট বা কোনও স্থান নেই। এটি কেবল তখনই ঘটে যখন আমি অ্যাপটি ডিবাগ মোডে চালিত করি এবং ব্রেকপয়েন্টের পরে কিছুই ক্রাশ হয় না। অ্যাপটি এমন কিছু কাজ করে না যেমন ঘটেছিল যখন আমি "প্রোগ্রামের বাস্তবায়ন চালিয়ে যান" ক্লিক করি।

এটি লোডডাটা পদ্ধতি, যার সাথে ডাকা হয় initWithData:

-(NSData*)loadData:(NSString*)fileName
{
    NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
    dataPath = [dataPath stringByStandardizingPath];
    NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
    return data;
}

লোডডাটা ফাংশনটি ঠিকঠাকভাবে কাজ করছে বলে মনে হচ্ছে। অনুরোধ করা এমপি 3 ফাইলটি ব্রেকপয়েন্টের পরে কোনও সমস্যা ছাড়াই লোড করা এবং প্লে করা হয়।

আমি কি ভুল করছি তা কি আপনার কোনও ধারণা আছে?

সম্পাদনা: ব্রেকপয়েন্টে থামার সময় আমি ব্যাকট্রেস চালাতাম। এই আউটপুট ছিল:

(lldb) বিটি
* থ্রেড # 1: জোয়ার = 0x1c03, 0x30df1724 libc ++ abi.dylib`__cxa_throw, কারণ বন্ধ করুন = ব্রেকপয়েন্ট 1.2
    ফ্রেম # 0: 0x30df1724 libc ++ abi.dylib`__cxa_throw
    ফ্রেম # 1: 0x36403a24 অডিওটুলবক্স`আইডি 3 পার্সার হ্যান্ডেল :: আইডি 3 পার্সার হ্যান্ডেল (শূন্য *, দীর্ঘ (*) (শূন্য *, স্বাক্ষরযুক্ত দীর্ঘ, স্বাক্ষরবিহীন দীর্ঘ, শূন্য **, স্বাক্ষরযুক্ত লং *)) + 452
    ফ্রেম # 2: 0x36403b0e অডিওটুলবক্স`আইডি 3 পার্সার ওপেন + 142
    ফ্রেম # 3: 0x3635bd16 অডিওটুলবক্স` এমপিইজি অডিও ফাইলে :: পার্সেআইডি 3 ট্যাগ () + 58
    ফ্রেম # 4: 0x3635b9aa অডিওটুলবক্স` এমপিইজি অডিওফিল :: পার্স অডিও ফাইল () + 26
    ফ্রেম # 5: 0x3631723e অডিওটুলবক্স` অডিওফিলঅবজেক্ট :: ডওপেন উইথক্যালব্যাকস (শূন্য *, দীর্ঘ (*) (শূন্য *, দীর্ঘ দীর্ঘ, স্বাক্ষরযুক্ত দীর্ঘ, শূন্য *, স্বাক্ষরহীন দীর্ঘ *), দীর্ঘ (*) (শূন্য *, দীর্ঘ দীর্ঘ, স্বাক্ষরবিহীন দীর্ঘ) , অকার্যকর কনস্ট *, স্বাক্ষরযুক্ত দীর্ঘ *), দীর্ঘ দীর্ঘ (*) (শূন্য *), দীর্ঘ (*) (শূন্য *, দীর্ঘ দীর্ঘ)) + 166
    ফ্রেম # 6: 0x36316480 অডিওটুলবক্স` অডিও ফাইলওপেন উইথক্যালব্যাকস + 612
    ফ্রেম # 7: 0x31f4c1ec AVFoundation`- [AVAudioPlayer আরম্ভের সাথে: ত্রুটি:] + 120

"সমাধান": দেখা যাচ্ছে যে আমি যদি সমস্ত ব্যতিক্রমগুলির জন্য ব্যতিক্রম ব্রেকপয়েন্টটি অক্ষম করি এবং কেবলমাত্র উদ্দেশ্য-সি ব্যতিক্রমগুলির জন্য ব্রেকপয়েন্ট ব্যবহার করি তবে সমস্যাটি অদৃশ্য হয়ে যায়। তবে এটি যে সমস্যাটি সমাধান করে না যে AVAudioPlayer এর বরাদ্দ একটি সি ++ ব্যতিক্রম ছোঁড়ে।


2
আমি একই স্ট্যাক ট্রেস ছিল। "সমস্ত ব্যতিক্রম" ব্রেকপয়েন্টটি অক্ষম করা আমার পক্ষে তা ঘটেনি।
মাকদাদ

উত্তর:


175

আপনার ব্যতিক্রম ব্রেক ব্রেকপয়েন্ট যুক্ত করুন এবং "সমস্ত" থেকে "উদ্দেশ্য-সি ব্যতিক্রমসমূহ" এ ব্যতিক্রমের সম্পাদনা করুন

অডিওটুলবক্সের কিছু ক্লাস নিয়মিত সি ++ ব্যতিক্রম ছুঁড়ে দেয়। আপনি তাদের এইভাবে ফিল্টার করতে পারেন।


6
আমি যেমন আমার প্রশ্নের "সমাধান" বিভাগটি লিখেছি, আমি এটিকে সমাধান হিসাবে বিবেচনা করি না। AVAudioPlayerর্যান্ডম ব্যতিক্রম নিক্ষেপ করা উচিত নয়।
টমাসক্ল

10
"AVAudioPlayer এলোমেলো ব্যতিক্রম ছোঁড়া উচিত নয়" - এটি আমাদের হাতে নেই। এইভাবে ফ্রেমওয়ার্কটি রচিত এবং আপনাকে এটির সাথে বাঁচতে হবে। যদিও, আমি সম্মত
হই

@ মুগুন্থ এর অর্থ কি ফ্রেমওয়ার্কটি অভ্যন্তরীণ ত্রুটিগুলিকে সাড়া দিচ্ছে এবং সংশোধন করছে? আপনি এটির অন্য কোনও ডকুমেন্টেশন সম্পর্কে সচেতন? আমি অনেক অনলাইন যা আমাকে তার পরামর্শ এই প্রোগ্রামার ত্রুটির ডাউন হতে পারে যে ... খুঁজে পাচ্ছি না
উন্মুলয়িতা

21

AVAudioPlayer এবং AVAudioRecorder উভয়ই এর ব্যতিক্রম ছুঁড়ে ফেলবে them এগুলি প্লেয়ারদের দ্বারা অভ্যন্তরীণভাবে পরিচালিত হয় তবে যদি আপনার "অল ব্রেকপয়েন্টস" (যেমন ব্যতিক্রম: সমস্ত, ব্রেক: অন থ্রো) এর ব্রেকআপপয়েন্ট থাকে তবে আপনি এই ব্যতিক্রমগুলি ধরতে পারবেন। আপনি যদি এগুলি কার্যকর করে চালিয়ে যান তবে অ্যাপটি স্বাভাবিকভাবে চলতে থাকবে এবং মোটেই ক্রাশ হবে না।

আমি এখন পর্যন্ত একমাত্র সমাধানটি নিয়ে এসেছি হ'ল ব্রেকপয়েন্ট ন্যাভিগেটরের ব্রেকপয়েন্ট বারে ক্লিক করা, এই নির্দিষ্ট ব্রেকপয়েন্টটি অক্ষম করা এবং এটির সাথে অক্ষম হয়ে চালানো।

অ্যাপ্লিকেশনটি কখনই কোনও ছোঁড়া ব্যতিক্রম নিয়ে ক্র্যাশ হয়ে থাকে, আমি সেমিডি -6, সেই ব্রেকপয়েন্টটি সক্ষম করি এবং পুনরায় চালু করি এবং ক্র্যাশ হওয়ার পরে আমি যা কিছু করেছি তা করি।

সম্পাদনা করুন: "উদ্দেশ্য-সি ব্যতিক্রম" এ সেট করা সুস্পষ্টভাবে এটি কীভাবে করবেন is উপরের উত্তর দেখুন!


9

আমি কীভাবে এই ত্রুটিটি স্থির করেছি তা দেখানোর জন্য এখানে একটি স্ক্রিনশট রয়েছে। আমি নিশ্চিত নই যে উপরের উত্তরগুলি যেভাবে বলছে সেভাবে এটিই যদি হয় তবে আমি এটির অনুরূপ ধারণা করি।

  1. এক্সকোডের ব্রেকপয়েন্ট ন্যাভিগেটরে যান।
  2. 'সমস্ত ব্যতিক্রম' লাইনে নিয়ন্ত্রণ-ক্লিক করুন-
  3. 'সম্পাদনা ব্রেকপয়েন্ট ...' বিকল্পটি নির্বাচন করুন।
  4. পরিবর্তন Exceptionথেকে Allথেকে Objective-C

এখানে চিত্র বর্ণনা লিখুন


2

ব্যাকট্রেস অনেক ধন্যবাদ, ধন্যবাদ !. আমরা সম্প্রতি একই ইস্যুতে চলতে শুরু করব। এটি এমপি 3 ফাইলগুলি ছুঁড়ে যাচ্ছিল যা এটি ফেলেছিল তার কোনও বৈধ আইডি 3 ট্যাগ নেই এবং এগুলি অ্যাপ্লিকেশন যেমন চালিয়ে তা ট্যাগার তাদের ঠিকঠাক করে দেয়!


1
আইডি 3 ট্যাগে অনুপস্থিত ক্ষেত্রগুলি স্থাপনের পরে, অ্যাপটি আরএডুপিলেয়ারের সূচনাতে আর থামেনি, তবে এটি এখনও খেলার নির্দেশে থামে ...
রেইনহার্ড মান্নার

কোন ক্ষেত্র প্রয়োজন ছিল? তাদের সবাই?
রেজিগিয়ান

@ রিগিজিয়ান আমি মনে করি না, এটি অনেক আগে ছিল। এর জন্যে দুঃখিত! আমার মনে নেই যে অনুপস্থিত কোন ক্ষেত্র যুক্ত করার দরকার নেই, আমি যদি সঠিকভাবে মনে রাখি তবে কেবল এটি একটি ট্যাগ স্যানিটাইজারের মাধ্যমে চালানো যথেষ্ট ছিল!
yo.ian.g

2

এক্সকোড 9.2 এ আপনি নির্দিষ্ট ব্যতিক্রমগুলি দেখার পরে তাদের অক্ষম করতে পারেন। ব্রেকপয়েন্টস মেনু খুলুন এবং অক্ষম করতে ক্লিক করুন (বিবর্ণ তীর)

এখানে চিত্র বর্ণনা লিখুন


-4

AVAudioPlayer কে শ্রেণি ভেরিয়েবল হিসাবে সেট করার চেষ্টা করুন!


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