এক্সকোড ডিবাগিং - চিত্রগুলি প্রদর্শিত হচ্ছে


100

আমি এক্সকোড ডিবাগারটি ব্যবহার করতে পছন্দ করি। আপনি একটি ভেরিয়েবলের মান একবার দেখে নিতে পারেন এবং এটি পরিবর্তনও করতে পারেন।

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

এক্সকোড এটি সমর্থন নাও করতে পারে। হতে পারে এমন কোনও বাহ্যিক সরঞ্জাম রয়েছে যা চিত্রগুলি প্রদর্শন করতে সহায়তা করবে?

উত্তর:


277

এক্সকোড ডিবাগারে চিত্রগুলি পরিদর্শন করতে কুইক লুক ব্যবহার করুন ।

একটি NSImageবা UIImageডিবাগারে নির্বাচন করুন , তারপরে কুইক লুক "আই" আইকনটি ক্লিক করুন।

এক্সকোড ডিবাগার সরঞ্জামদণ্ডে "আই" আইকন

ওএস এক্সের অন্যান্য ক্ষেত্রগুলির মতো spacebarআপনিও কুইক লুকের জন্য ব্যবহার করতে পারেন !

কুইক লুকের মাধ্যমে এক্সকোড ডিবাগারে একটি ইউআইআইমেজ দেখছে

ডিবাগারে তাত্ক্ষণিকভাবে আপনার নিজের ক্লাসের জন্য প্রয়োগ করা যেতে পারে:

কাস্টম প্রকারের জন্য দ্রুত চেহারা সক্ষম করা En

এক্সকোড ডিবাগারে তাত্ক্ষণিক তাত্ক্ষণিক বৈশিষ্ট্য আপনাকে একটি গ্রাফিকাল রেন্ডারিংয়ের মাধ্যমে কোনও অবজেক্ট ভেরিয়েবলের অবস্থার তাত্ক্ষণিক মূল্যায়ন করতে দেয়, কোনও পপওভার উইন্ডোতে প্রদর্শিত হয় ডিবাগার ভেরিয়েবল ভিউতে বা আপনার উত্স কোডে place

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


14
সেরা বৈশিষ্ট্য। কখনও!
সেভ

4
এটি বছরের সবচেয়ে মূল্যবান উত্তর!
বেদরানো

9
এক্সকোডে যুগে যুগে কোডিং এবং আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম না! এটা সত্যিই দারুন!!! অনেক অনেক ধন্যবাদ
জোয়ান কার্ডোনা 12

4
এই বৈশিষ্ট্য সম্পর্কে জানতেন তবে স্পেসবার টিপের জন্য ধন্যবাদ! মাউস দিয়ে চোখ ক্লিক করার চেয়ে অনেক সহজ। :)
চিন্তন প্যাটেল

4
মনোযোগের মতো এক্সকোড 10 এবং সুইফট 4.2 দিয়ে কাজ করুন। ধন্যবাদ
এটারেশকভ

16

সম্পাদনা:

এক্সকোড 5 হিসাবে, ডিবাগারটি আপনাকে ইউআইআইমেজ / সিজিআইমেজেরাফ ভেরিয়েবলের ভিজ্যুয়াল উপস্থাপনা দেখাতে পারে!

এক্সকোড নিজেই এটি করতে পারে না। আমি বাইরের সরঞ্জাম সম্পর্কে জানি না।

ডিবাগ করার সময় আমি চিত্রগুলি পরীক্ষা করার জন্য যা করছি তা হ'ল সেই কাঁচা তথ্যটিকে .png এর মতো একটি চিত্র-ফাইলের ফর্ম্যাটে রূপান্তর করা এবং এটি কোথাও সংরক্ষণ করা এবং তারপরে আমি কোনও চিত্র দেখার সরঞ্জাম দিয়ে চিত্রটি খুলছি।

সেই উদ্দেশ্যে আমার কাছে একটি টুকরো কোড রয়েছে যা মূলত এর মতো দেখতে:

NSData *imageData = UIImagePNGRepresentation(self.myUIImage);
[imageData writeToURL:desktopURL atomically:YES];

এবং আমি এই কোডটি কেবল অনুলিপি-পেষ্ট করছি যেখানে আমি দৌড়তে কোনও চিত্রের সামগ্রী দেখতে চাই।

নিশ্চিত এই কোড রূপান্তর উচ্চ খরচের করা সম্ভব কারণে যত তাড়াতাড়ি পরিত্রাণ পেতে করুন UIImageথেকেNSData


4
শুধু কৌতূহলী: আপনি কেন "(এবং করা উচিত নয়") বলছেন? একটা সময় ছিল যখন লোকেরা বলেছিল যে কম্পিউটারগুলির রঙিন স্ক্রিনগুলি "খুব বেশি ব্যয়বহুল" হওয়া উচিত নয়, বা প্রগ্রেমারদের দ্বারা ব্যবহৃত একটি পাঠ্য সম্পাদক "সিনট্যাক্স" আপনার কোডটি পরীক্ষা করে "উচিত নয়। কোন এক পর্যায়ে আমাদের অবশ্যই প্রত্নতাত্ত্বিক ধারণা থেকে এগিয়ে যাওয়ার দরকার আছে?
unsynchronized

ঠিক আছে, তাই আমি "উচিত নয়" ফিরে। আমি আশা করি একদিন আইডিই ডিবাগ করার সময় চিত্রগুলি ব্যাখ্যা করবে।
অভি শুক্রন

এটি একটি দুর্দান্ত ধারণা এবং কেবল আমাকে সাহায্য করেছে - ধন্যবাদ। স্পষ্টরূপে একবার কেউ এটি দেখায়, তবে এখনও দুর্দান্ত পয়েন্টার।
স্কট লিটল

@ ইউএনসিএনক্রোনাইজড আপনি কি এটিকে দেখবেন ... এক্সকোড 5 ডিবাগারে চিত্রগুলি দেখাতে পারে ...
আভি শুক্রন

15

এক্সকোড 5 এর জন্য সম্পাদনা করুন: এখন আপনি যখন কোনও চিত্রের পরিবর্তনশীল নামের উপরে ঘোরাবেন তখন ডানদিকে একটি "চোখ" আইকন রয়েছে। বর্তমান চিত্রটি দেখতে এটি ক্লিক করুন!

দ্রষ্টব্য: কখনও কখনও চিত্রটি সঠিক হলেও XCode এ এটি ব্যর্থ হয়। যদি এটি ঘটে থাকে, বা যদি আপনার কোনও UIImage পরিবর্তনশীল না থাকে (যেমন এটি অন্য কোনও সামগ্রীর সম্পত্তি, আপনি এখনও পুরানো উত্তরটি ব্যবহার করতে পারেন:

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

e [UIImagePNGRepresentation(myImage) writeToFile:@"/Users/<userName>/Desktop/myImage.png" atomically:NO];

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

আপনি যদি কোনও আইওএস ডিভাইসে কাজ করছেন তবে আপনি এটি ব্যবহার করতে পারেন

 e [UIImagePNGRepresentation(myImage) writeToFile:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingString:@"/myImage.png"] atomically:NO];

তারপরে আপনি ফাইন্ডার ব্যবহার করতে পারেন; আপনার ডিভাইস নির্বাচন করুন; "নথি পত্র"; তারপরে আপনার ডেভ অ্যাপ্লিকেশনটি দেখুন এবং চিত্রটি দেখার জন্য এটি আপনার ডেস্কটপটিতে অনুলিপি করুন।


+1000000 এটি আশ্চর্যজনক সমাধান! আমি যুক্ত করতে চাই যে আপনি যদি ডিভাইসটি ডিবাগ করছেন তবে আপনি ডিভাইস থেকে চিত্রটি পুনরুদ্ধার করতে আইফুনবক্স বা আইএক্সপ্লোরারের মতো কিছু ব্যবহার করতে পারেন।
কোয়ান্টিন

এমনকি আপনি সরাসরি "/ ব্যবহারকারী / <আপনার ব্যবহারকারী নাম> /" এ লিখতে পারেন; এইভাবে আপনাকে জিইউইডিগুলির মাধ্যমে আপনার অস্থায়ী ফোল্ডারটি সন্ধান করতে হবে না
ড্যানি পি

ভাল পরামর্শ (নোট করুন আপনি / ব্যবহারকারী / <আপনার ব্যবহারকারী নাম> / ব্যবহার করতে হবে, এটি ~ / দিয়ে কাজ করে না)। পরামর্শ অনুসারে আপডেট।
ম্যাকওয়ার্থ

অসাধারণ পরামর্শ @ ম্যাকওয়ার্থ। ধন্যবাদ
অরণগো_86

13

আপনি যদি lldb কনসোল নিয়ে কাজ করতে চান তবে chisel কমান্ড "ভিজ্যুয়ালাইজ" ব্যবহার করুন

টিপ:

ইনস্টলেশনের পরে, আপনি ক্রিয়াকলাপের সাথে ইউআইআইমেজ সেট করার পরে শর্তসাপেক্ষ ব্রেকআপপয়েন্ট সেট করতে পারেন: "মাইইউআইআইমেজটাইজশুইউথিকুইক্লুক দেখুন"

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

ডিবাগার বন্ধ হয়ে গেলে এটি আপনাকে স্বয়ংক্রিয়ভাবে চিত্রটি প্রদর্শন করবে।


4

আপনি যদি ভেরিয়েবল ভিউয়ের মাধ্যমে চিত্রটিতে না যেতে পারেন তবে কী হবে?

@ পকম্ব যা বলেছিল তা প্রতিধ্বনিত হচ্ছে - আপনি কোনও চিত্রের তাত্ক্ষণিকভাবে দেখতে ভেরিয়েবলের ভিউটি ব্যবহার করতে পারেন। কিন্তু আপনি যদি চিত্রটি পেতে না পারেন?

উদাহরণস্বরূপ আমার এখানে একটি চিত্র রয়েছে (contentViewController.view.subviews[0].subviews[1] as? UIImageView).image

তবে আমি যদি contentViewControllerপরিবর্তনশীল দৃশ্যে প্রসারিত করার চেষ্টা করি তবে এটি আমার সংক্ষিপ্তসারগুলি প্রকাশ করে না

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

আপনি যা করতে পারেন তা রাইট ক্লিক করুন, একটি এক্সপ্রেশন যুক্ত করুন এবং তারপরে আপনি এটি দেখতে পাবেন!

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

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

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


তারপরে আপনার উপরের মতো একই কমান্ডটি ব্যবহার করতে সক্ষম হওয়া উচিত: po [UIImagePNGRepstreamation ((কন্টেন্টভিউ কনট্রোলার.ভিউ.সুবভিউস [0] .সুবভিউস [1] হিসাবে? ইউআইআইভিউভিউ)। আইমেজ) রচনাটিফাইলে: @ "/ ব্যবহারকারী / <ব্যবহারকারীর নাম / ডেস্কটপ /watchImage.png "পরমাণুগতভাবে: না];
ম্যাকওয়ার্থ

1

এক্সকোডে কোনও ভেরিয়েবলের উপরে ঘোরাফেরা করার সময় আই আইকনটি ক্লিক করুন:

এক্সকোড আই আইকন


-8

আপনি আপনার চিত্রের লাইনে একটি ব্রেকপয়েন্ট রাখতে পারেন এবং তারপরে ডিবাগারে কেবল লিখুন:

po your_UIImage_object

poএর অর্থ দাঁড়ায় print object, এটি একটি জিডিবি কমান্ড যা আপনার ক্ষেত্রে ছবিটির ক্ষেত্রে পাস করা অবজেক্ট সম্পর্কে বেশ কয়েকটি দরকারী তথ্য প্রদর্শন করবে।


4
প্রকৃতপক্ষে ইউআইআইজেজ অবজেক্টের সাথে পো ব্যবহার করা কেবল কনসোলে প্রবন্ধের শ্রেণীর নাম মেমরি ঠিকানা মুদ্রণ করবে। এর মতো কিছু: <UI চিত্র: 0x7fc98df6c7d0>
ড্যানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.