এক্সকোড ডিবাগারে এনএসডেটরিও ভেরিয়েবলের সামগ্রীগুলি কীভাবে দেখবেন?


85

এক্সকোড ডিবাগারের মাধ্যমে কোনও এনএসডিকোরিয় ভেরিয়েবলের কী / মান জোড়া দেখার কোনও উপায় আছে কি? ভেরিয়েবল উইন্ডোতে এটি সম্পূর্ণরূপে প্রসারিত হলে তথ্যের পরিধি এখানে রয়েছে:

Variable  Value      Summary
jsonDict  0x45c540   4 key/value pairs
 NSObject {...}
  isa     0xa06e0720

আমি আশা করছিলাম এটি অভিধানের প্রতিটি উপাদান আমাকে দেখায় (অ্যারে ভেরিয়েবলের সমান)।

উত্তর:


140

জিডিবি উইন্ডোতে আপনি poঅবজেক্টটি পরিদর্শন করতে পারেন ।

প্রদত্ত:

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];

অবজেক্টস যুক্ত হওয়ার পরে একটি ব্রেকপয়েন্ট নির্ধারণ করে আপনি অভিধানে যা আছে তা পরীক্ষা করতে পারেন

(gdb) po dict
{
  bar = foo;
  buz = fiz;
}

অবশ্যই এটি এমন NSStringজিনিস যা দুর্দান্তভাবে মুদ্রণ করে। অন্যান্য জটিল বস্তুর সাথে ওয়াইএমএমভি।


7
ওহে! জিডিবি কী? পো কী? বোঝার জন্য নিশ্চিত নয় ... আপনার সহায়তার জন্য ধন্যবাদ! :)
মার্টিন

4
ঠিক আছে তাই আমি জানতে পেরেছিলাম যে জিডিবি জিএনইউ ডিবাগারকে বোঝায় এবং এটি আসলে এক্সকোডের ডিবাগার উইন্ডো। এখন আমার পো কী আছে তা খুঁজে বার করতে হবে
মার্টিন

18
ঠিক আছে! সুতরাং gdb আসলে কনসোলে একটি প্রম্পট, যেখানে আপনি আদেশগুলি ইনপুট করতে পারেন। "Po অবজেক্ট_নাম" টাইপ করে আপনি কনসোলে মুদ্রিত অবজেক্টের সামগ্রী পেয়েছেন।
মার্টিন

7
পো মুদ্রণ-অবজেক্টের জন্য একটি উপাধি
ব্র্যাড কাপিট

অপূর্ব! পিএইচপি-তে "ইকো ভার_ডাম্প ()" বা "মুদ্রণ_আর ()" এর সমতুল্য।
এমপেমবার্ন

30

আপনি যে কোনও অবজেক্টে (ওবিজেসি বা কোর ফাউন্ডেশন) ভেরিয়েবলটি ডান ক্লিক করতে পারেন এবং "কনসোল থেকে প্রিন্টের বিবরণ প্রিন্ট করুন" (রান-> ভেরিয়েবল ভিউতেও) নির্বাচন করতে পারেন। এটি ফলাফলটিকে প্রজেক্টের -debugDescriptionপদ্ধতি মুদ্রণ করে , যা ডিফল্টরূপে কল করে -description। দুর্ভাগ্যক্রমে, NSDictionaryআপনি সাধারণত যত্নশীল নন এমন একগুচ্ছ অভ্যন্তরীণ তথ্য উত্পাদন করতে এটিকে ওভাররাইড করে, তাই এই নির্দিষ্ট ক্ষেত্রে ক্রেগের সমাধান আরও ভাল।

প্রদর্শিত কী এবং মানগুলিও ব্যবহার করে -description, সুতরাং আপনি যদি সংগ্রহগুলি এবং অন্য কোথাও আপনার অবজেক্টগুলি সম্পর্কে দরকারী তথ্য চান, তবে ওভাররাইডিং -descriptionঅবশ্যই আবশ্যক। আমি সাধারণত এই লাইন বরাবর এটি প্রয়োগ করি, ডিফল্ট NSObjectবাস্তবায়নের ফর্ম্যাটটির সাথে মেলে :

- (এনএসএসটিং *) বর্ণনা
{
    ফিরে আসুন [এনএসএস স্ট্রিং উইথফর্ম্যাট: @ "<% @% p> oo ফু:% @}", [স্ব শ্রেণি], স্ব, [স্ব ফুঃ]];
}

6

আপনি সিএফএসও ব্যবহার করতে পারেন ()

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);

আউটপুট আপনি দেখতে পাবেন

{
  bar = foo;
  buz = fiz;
}

3

এক্সকোড ৪.6 নীচের কার্যকারিতা যুক্ত করেছে যা আপনার পক্ষে সহায়ক হতে পারে

The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger

এখন আপনি কনসোলে পুরো অবজেক্টটি প্রিন্ট না করে এই অবজেক্টের ধরণগুলি পরীক্ষা করতে পারেন। উপভোগ করুন!

সূত্র: http://developer.apple.com/library/mac/#docamentation/DeveloperTools/Conceptual/WhatNewXcode/Articles/xcode_4_6.html


এটি আমার কাছে বগি - কেবল আমার এনএসডির অভিধানের অংশটি দেখায়
পল

1

আপনার ডিকটিতে ক্লিক করুন, তারপরে ছোট "আমি" আইকনে ক্লিক করুন, এটি কাজটি করা উচিত :-) এক্সকোড 5, একটি ডিকের মান দেখুন


1

আপনি যদি আধুনিক এক্সকোডে ব্রেকআপপয়েন্ট ক্রিয়ায় এগুলি মুদ্রণ করতে চান (হ্যাঁ, আমি মূল পোস্টের পরে 10 বছর পরে!) "লগ বার্তা" ক্রিয়ায় নিম্নলিখিত ব্রেকপয়েন্ট পয়েন্টটি ব্যবহার করুন:

@ মাইডোডেরিয়াস.ডেস্ক্রিপশন @

নীচে আমার ব্রেকপয়েন্টের ক্রিয়াটির একটি স্ক্রিনশট রয়েছে যেখানে ভেরিয়েবল ইভেন্টটি একটি এনএসএসটিং এবং ভেরিয়েবল প্রসঙ্গটি ডেটা হ'ল এনএসডি অভিধান যা আমি লগ ইন করছি :


0

আপনি এনএসএলজিও ব্যবহার করতে পারেন ।

এছাড়াও আপনি ডিবাগ অঞ্চল বা এক্সকোডে যেতে পারেন, তারপরে All Variables, Registers, Globals and Staticsআপনার ভেরিয়েবল নির্বাচন করুন। এটিতে রাইট ক্লিক করুন। তারপরে সিলেক্ট করুনPrint description of "...."

আশা করি এটা সাহায্য করবে!

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