'প্রকল্পের নাম' অপ্টিমাইজেশান সহ সংকলিত হয়েছিল - পদক্ষেপ অদ্ভুত আচরণ করতে পারে; ভেরিয়েবলগুলি উপলভ্য নাও হতে পারে


210

এএফ নেটওয়ার্কিং কোডে প্রবেশের চেষ্টা করা নিম্নলিখিত সতর্কতা উত্পন্ন করে:

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.

এবং অবশ্যই আমি কোডটি ডিবাগ করতে পারছি না। নির্দিষ্ট হওয়ার জন্য আমি UIImageView+AFNetworkingবিভাগটি ডিবাগ করার চেষ্টা করছি যা অসম্ভব বলে মনে হচ্ছে। কোড পরিবর্তন করার কোনও প্রভাব নেই (চেষ্টা করা NSLogইত্যাদি) এবং কম্পাইলারগুলিতে পদক্ষেপ নেওয়ার চেষ্টা করার সময় অ্যাসেম্বলি কোড এবং শোতে যায়UIImageView+TVASTAFNetworking বিভাগের নাম হিসাবে হয় যা কোড বেসের কোথাও বিদ্যমান নেই।

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

এক্সকোড iOS. আইওএস ৯ এবং ৮ কোকোপড (কোনও ফ্রেমওয়ার্ক নেই) ব্যবহার করা হচ্ছে

আপডেট আমি উল্লেখ করতে ভুলে গেছি যে অপটিমাইজার noneরিলিজ এবং ডিবাগ কনফিগারেশন উভয়ের জন্য সেট করা আছে এবং আমি আসলে কনফিগার ব্যবহার করছি Debug

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

আপডেট 2

Strip Debug Symbols পাশাপাশি বন্ধ আছে।


আমি মনে করি এখানে "স্ট্রিপ ডিবাগ সিম্বলস" অপশনটি রয়েছে। এটি সম্ভবত এই সমস্যার কারণ হতে পারে। এটা বন্ধ?
NobodyNada

1
@NobodyNada হ্যাঁ Strip Debug Symbolsবন্ধ আছে।
মোজতাবা

অদ্ভুত আমি কেবল স্ট্রিপ ডিবাগ প্রতীকটি চালু করার চেষ্টা করেছি এবং সতর্কতাটি 8- | অদৃশ্য হয়ে গেছে
গমিনো

@ মজতাবা আরে, আপনি কীভাবে সমস্যার সমাধান করবেন তা খুঁজে পেয়েছেন?
এক্সকোড

@ হাডু: দুর্ভাগ্যক্রমে নেই
মোজতাবা

উত্তর:


175

যদি আপনার প্রকল্পটি সুইফ্ট ব্যবহার করে তবে প্রকল্প / লক্ষ্য কনফিগারেশনে দুটি পৃথক "অপ্টিমাইজেশন স্তর" সেটিংস রয়েছে।

আপনি উভয় সঠিকভাবে সেট করেছেন তা নিশ্চিত করুন:

  1. প্রকল্প নেভিগেটর ফলকে আপনার প্রকল্প নির্বাচন করুন
  2. "প্রকল্প" গাছের নীচে আপনার প্রকল্পের সেটিংস নির্বাচন করুন
  3. "বিল্ড সেটিংস" ট্যাবে ক্লিক করুন
  4. "অপ্টিমাইজেশন স্তর" অনুসন্ধান করুন এবং আপনি দুটি সেটিংস দেখতে পাবেন, একটি এলএলভিএমের জন্য এবং একটি দ্রুতগতির জন্য।
  5. প্রশ্নে বিল্ড কনফিগারেশনের জন্য উপযুক্ত সেটিংস ( None [-O0]এলএলভিএম এবং None [-0none]সুইফটের জন্য) সেট করুন ।

অপ্টিমাইজেশনের সাথে সংকলিত হয়েছিল পদক্ষেপ অদ্ভুত আচরণ করতে পারে অদৃশ্য পরিবর্তনগুলি উপলব্ধ নাও হতে পারে

এটি করা আমার জন্য সেই সতর্কবার্তাটি সমাধান করেছে।


1
মিশ্র ভাষার প্রকল্পগুলির সাথে কী ...?
ভিভ করুন

এলএলভিএম এবং সুইফটের মধ্যে পার্থক্য কী? এটা সুইফট কি আমি প্রকল্পে লিখেছিলেন এবং LLVM জন্য যাই হোক না কেন আমি ডিবাগার অর্থাত জিনিস ডিবাগ শুভেচ্ছা করছি হয় এটা কি po, p, expr...?
মধু

124

দেখে মনে হচ্ছে আপনার প্রকল্পটি রিলিজ মোডে আছে। রিলিজ মোড অ্যাপটিকে প্রচুর অপ্টিমাইজেশনের সাহায্যে সংকলন করে, তবে ডিবাগারগুলি অপ্টিমাইজেশানগুলি ঘৃণা করে, তাই অ্যাপ্লিকেশনটিকে নির্ভরযোগ্যভাবে ডিবাগ করার জন্য আপনাকে এটিকে ডিবাগ মোডে স্যুইচ করতে হবে যা অপ্টিমাইজেশন হ্রাস করে এবং একগুচ্ছ ডিবাগিং তথ্য যুক্ত করে। এটি ডিবাগ মোডে স্যুইচ করতে:

  • এক্সকোডের উপরের-বাম কোণে আপনার স্কিমটিতে ক্লিক করুন।

এক্সকোডের উপরের-বাম কোণে আপনার স্কিমটিতে ক্লিক করুন।

  • "স্কিম সম্পাদনা করুন ..." নির্বাচন করুন

"স্কিম সম্পাদনা করুন ..." নির্বাচন করুন

  • "বিল্ড কনফিগারেশন" ড্রপডাউন ক্লিক করুন। এবং এটি ডিবাগ মোডে পরিবর্তন করুন।

"বিল্ড কনফিগারেশন" ড্রপডাউন ক্লিক করুন।


8
আমি ডিবাগ ব্যবহার করছি। এবং নিশ্চিত অপ্টিমাইজারটি বন্ধ।
মোজতাবা

এটি আকর্ষণীয় ছিল। এছাড়াও এটি রিলিজ মোডে সেট করার কারণে আমার কিছু ব্রেকপয়েন্টগুলি হিট হচ্ছে না এবং অন্যরা হিট হচ্ছিল ¯_ (ツ) _ / ¯
হানি

59

এই সতর্কতাটি কেবলমাত্র তখনই উপস্থিত হয় যখন আপনি কোনও ব্রেকপয়েন্টে আঘাত করেন এবং উত্সটি এমন কোনও প্রকল্পে রয়েছে যেখানে অপ্টিমাইজেশন সক্ষম করা হয়েছে, আপনাকে সত্যিকারের পরিবর্তনশীল মানগুলি দেখা থেকে বিরত রাখবে (প্রতিটি বস্তু শূন্য হিসাবে দেখানো হবে, তা না হলেও)

আমার ক্ষেত্রে, এটি তখনই ঘটেছিল যখন কোকোপোড নির্ভরতার মধ্য দিয়ে ধাপে ধাপে ডিবাগ করা।

সুতরাং আপনার যদি আপনার প্রধান টার্গেট এবং প্রজেক্ট সেটিংস সঠিকভাবে সেট করা থাকে (স্ট্রিপ ডিবাগ সিম্বল = অফ, এবং অপ্টিমাইজেশন স্তর কোনও নয়), আপনার পড প্রকল্পের ব্রেক ব্রেকপয়েন্ট থেকে আঘাত হানার জন্য এটি একইরকম তা নিশ্চিত করতে হবে।

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


অন্যান্য উত্তর পড়ুন, তারা একই পরামর্শ দিচ্ছে। তবে তারা আমার প্রকল্পে (ওরফে None [-O0]) সমস্ত বন্ধ রয়েছে
মোজতাবা

2
আমি জানি যে আপনি বলেছিলেন যে এটি আপনার প্রজেক্টে বন্ধ ছিল, ঠিক যেমনটি আমার ছিল, কিন্তু আপনি কী পড নির্ভরতা প্রকল্পগুলির কনফিগারেশনটি একবার দেখেছেন?
গমনো

এখানে এক্সকোড 7. এর সাথে একই সমস্যা I সম্ভবত ট্র্যাচারবার্ড লাইব্রেরিটি ব্যবহার শুরু করার পরে সমস্যাটি উপস্থিত হয়েছিল। তবে ব্রেকপয়েন্টটি আমার নিজস্ব কোডের অভ্যন্তরে।
মাইক

1
পডস প্রকল্পের জন্য, "প্রকল্প" অপটিমাইজেশন স্তর সেটিংসটি কোনও কাজ করে না। (কোনও পোড টার্গেটের জন্য কোনও পরিবর্তন নেই)।
ooops

2
এটি ভুল। আপনি pod installআবার যখন এটি ওভাররাইড হবে । এটি এই মত পরিবর্তন করুন ।
Iulian Onofrei

13

দেখা যাচ্ছে যে কোনও পুরানো প্রকল্প (Xcode 7.x +) নতুন এক্সকোড 8.3 (8E162) এ আমদানির পরে, সম্ভবত সংকলক অপ্টিমাইজেশনের কারণে, সুইফ্ট সংকলক - অনুকূলকরণ স্তরটি ডিফল্টরূপে দ্রুত, একক-ফাইল অপ্টিমাইজেশনে সেট করা হয়েছিল :

আগে

এটিকে কারও কাছে পরিবর্তন না করে সমস্যাটি সমাধান করা:

পরে


আমি এটা করেছি। আমার জন্য কাজ হয়নি। আইওএস বিল্ডে আমি এই সমস্যার মুখোমুখি হয়েছি যা ইউনিটি উত্পন্ন।
চাঁদনী

11

Editor-> Validate Settingsতারপরে সমস্ত পরিবর্তনগুলি নিশ্চিত করুন। তাহলে আপনার পাওয়া উচিতস্থানে সুইফ্ট সংকলক অপ্টিমাইজেশন স্তর

ডিবাগ সেট করুন None


1
আমি এটা করেছি। আমার জন্য কাজ হয়নি। আইওএস বিল্ডে আমি এই সমস্যার মুখোমুখি হয়েছি যা ইউনিটি উত্পন্ন।
চাঁদনী

9

এটি আমার জন্য সমাধান ছিল ...

গিমিনোর উত্তরের লাইনের পাশাপাশি আপনি যদি কোকোপড ব্যবহার করছেন তবে পোডফাইলে এই জাতীয় একটি লাইন যুক্ত করুন:

xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

বা কোকোপড সংস্করণগুলির জন্য> = 1.0 (ধন্যবাদ ডিয়েজমন)

project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

যেখানে মাইপ্রজেক্টের স্ট্যান্ডার্ড 'ডিবাগ' ছাড়াও ডিবাগ কনফিগারেশন হিসাবে 'ডিবাগ - লোকাল', 'ডিবাগ-স্টেজিং', 'ডিবাগ - প্রোডাকশন' রয়েছে

ডিফল্টরূপে, কোকোপডগুলি সাধারণত রিলিজ হিসাবে পড কনফিগারেশন তৈরি করে, এই পোডফিল লাইন আপনাকে এটি ডিবাগ করছে তা জানাতে দেয়।


9

আমি আজ একই ইস্যুতে দৌড়েছি এবং এটি বের করে ফেলেছি (কমপক্ষে আমার ক্ষেত্রে)। আমি কোকোপডগুলিও ব্যবহার করছি এবং আমার পরীক্ষার লক্ষ্যটি চালানোর সময় আমি এই সমস্যাটি নিয়ে আসছিলাম (ওবজেসির সাথে সুইফ্ট মিশ্রিত)।

আমি আইওএস 9.2 এসডিকে দিয়ে এক্সকোড 7.2 ব্যবহার করছি।

নীচের চিত্রটিতে, আপনি আমার পরিবর্তনের আগে লক্ষ্য এবং প্রকল্পের জন্য অপ্টিমাইজেশন দেখতে পাবেন:

পরিবর্তনের আগে অপ্টিমাইজেশন স্তর

বিস্ময়কর জিনিস যে যদিও সমাধান অপ্টিমাইজেশান হল কোনটি [-O0] , শুধুমাত্র থেকে প্রকল্পের সেটিং পরিবর্তন করার পর -Os করার -O0 কম্পাইলার লক্ষ্য নিখুঁত স্টপ করেনি।

নীচে আপনি আমার চূড়ান্ত সেটিংস দেখতে পারেন:

পরিবর্তনের পরে অপ্টিমাইজেশন স্তর


7

এটি অনেক দিন হয়ে গেছে তবে শেষ পর্যন্ত আমি সমস্যাটি সমাধান করেছি। একটা তৃতীয় অপ্টিমাইজেশান পতাকা LTOবা Link Time Optimizationএবং আশ্চর্যজনক কেউ তা এখানে উল্লেখ করেছি এবং কিছু কারণে আমি এটা বেতন মনোযোগ পারেন নি। এটা ঠিক উপরে আছেOptimization Level এখানে পোস্ট করা অনেকগুলি স্ক্রিন শটে দেখতে পাচ্ছেন সেটিং এর ।

সুতরাং সংক্ষিপ্তসার হিসাবে এখানে 3 টি পৃথক অপ্টিমাইজেশন পতাকা রয়েছে যা আপনি ডিবাগিংয়ের জন্য বন্ধ করতে চান:

  • এলএলভিএম লিঙ্ক টাইম অপ্টিমাইজেশন ( -flto)
  • এলএলভিএম অপটিমাইজেশন স্তর ( -O)
  • সুইফ্ট সংকলক অপ্টিমাইজেশন স্তর

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

এলটিও সম্পর্কে আরও তথ্য: http://llvm.org/docs/LinkTimeOptimization.html


2
আমি এটা করেছি। আমার জন্য কাজ হয়নি। আইওএস বিল্ডে আমি এই সমস্যার মুখোমুখি হয়েছি যা ইউনিটি উত্পন্ন।
চাঁদনী

@ চান্দনি, এখানেও আমি একই সমস্যার মুখোমুখি হয়েছি আপনি কি সমাধান খুঁজে পেয়েছেন?
রঞ্জানী

2

আপনার যদি আপনার সুইফ্ট শুঁটিগুলির জন্য অপটিমাইজেশন অক্ষম করার দরকার হয় যাতে আপনি সেগুলিতে ডিবাগ করতে পারেন তবে নিম্নলিখিতটি আপনার এ যুক্ত করুন Podfile। এটি কেবলমাত্র ডিবাগ বিল্ডগুলির জন্য অনুকূলিতাকে অক্ষম করবে।

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.name == "Debug"
        config.build_settings["SWIFT_OPTIMIZATION_LEVEL"] = "-Onone"
      end
    end
  end
end

1

আপনি কি নিশ্চিত যে আপনার ডিবাগ কনফিগারেশন কোডটি অনুকূলিত করে না (এটি হওয়া উচিত নয়)? দেখে মনে হচ্ছে আপনি দুর্ঘটনাক্রমে ডিবাগ কনফিগারেশনের জন্য অপ্টিমাইজেশানগুলি সক্ষম করেছেন এবং আপনার লক্ষ্যটির সেটিংস থেকে এটি বন্ধ করা উচিত।


3
অপ্টিমাইজেশন সব জন্য বন্ধ। এমনকি রিলিজ বিল্ডটি ঠিক নিশ্চিত করার জন্য
মোজতাবা

@ মোজতবা তবে রিলিজ মোডটি অপ্টিমাইজেশন চালু করেছে!
কেউই নদা

0

এই ত্রুটিটি আমার কাছে দু'বার হয়েছিল এবং প্রতিটি ক্ষেত্রে কোনও পরিষেবার জন্য অনুরোধ করা URL প্যারামিটারে একটি ভুল ছিল। এক ক্ষেত্রে ইউআরএলটির বন্দর বিভাগে কিছু জায়গা ছিল অন্য ক্ষেত্রে কিছু ptionচ্ছিক মান মোড়কানো হচ্ছে না।

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


0

আমি যা করেছি তা হ'ল Product > Cleanআমার প্রকল্পটি পরিষ্কার করুন ( ) এবং এটি আবার চালানো


0

এটি একটি ওভারসিম্প্লিফিকেশন হতে পারে তবে আপনি কি রিলিজের জন্য বা অপ্টিমাইজেশনের (যা সুইফ্ট বা এলএলভিএম থেকে প্রতীকগুলি সরিয়ে ফেলছেন) খুব বেশি উচ্চতায় তৈরি করছেন? যদি তাই হয় তবে আপনার স্কিমটি সম্পাদনা করুন এবং ডিবাগ-এ স্যুইচ করুন বা আপনার সুইড বা এলএলভিএম অপটিমাইজেশনের জন্য কোনও বিল্ড সেটিংস সম্পাদনা করুন (0)।


0

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

পডস প্রোজেক্ট সেটিংসে যান -> আপনার সি-ব্যবহার লক্ষ্য -> বিল্ড সেটিংস -> অ্যাপল ঝনঝন - কাস্টম সংকলক পতাকা -> অন্যান্য সি পতাকা এবং -O3যে পতাকাটি পেয়েছিল সেটিকে কোনওভাবে সরিয়ে ফেলুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.