2012-02-17 10 views
11

के माध्यम से सीधे सिम्युलेटर में चल रहे किसी ऐप के लिए एनएसएलओजी को देखकर, क्या मैं किसी भी तरह से आईओएस सिम्युलेटर में चल रहे किसी ऐप के कंसोल लॉग देख सकता हूं जब मैं एक्सकोड के माध्यम से कोड नहीं चलाता? मैं सीधे सिम्युलेटर के भीतर से ऐप खोल रहा हूं। क्या मैं कहीं एनएसएलओजी स्टेटमेंट प्रिंटिंग देख सकता हूं?एक्सकोड

+0

एक्सकोड के ऑर्गनाइज़र लॉन्च करें। – 0xDE4E15B

+0

ऑर्गनाइज़र डिवाइस के लिए काम करता है, सिम्युलेटर के लिए नहीं। – Abhinav

उत्तर

1

मै मैक ओएस में "कंसोल" एप्लिकेशन में लॉग देखने के लिए प्रबंधन कर सकता था।

5

हां। यहाँ Tools Workflow Guide for iOS से एक उद्धरण है:

जब एक सिम्युलेटर में अपने अनुप्रयोग चल रहा है, तो आप कंसोल अनुप्रयोग (/Applications/Utilities में स्थित) में ऐप्लिकेशन के कंसोल लॉग पहुँच सकते हैं।

3

From BYU CocoaHeads:

रीडायरेक्ट NSLog()

कभी कभी, आप एक फाइल करने के लिए अपने NSLog() उत्पादन रीडायरेक्ट करने के लिए ताकि आप इसे अधिक आसानी से जांच कर सकते हैं कर सकते हैं। NSLog() संदेशों को STDERR पर आउटपुट करके काम करता है, इसलिए आपको केवल STDERR स्ट्रीम को फ़ाइल में रीडायरेक्ट करना है, और आप जाने के लिए अच्छे हैं। निम्नलिखित कोड अपने डेस्कटॉप पर एक फ़ाइल में रीडायरेक्ट करेगा:

int fd = creat("/Users/dave/Desktop/my_log", 
         S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); 
    close(STDERR_FILENO); 
    dup(fd); 
    close(fd); 
    NSLog(@"this will be written to my_log"); 

यह केवल आपके आवेदन से NSLog() कॉल को प्रभावित करेगा।

+1

उह, जो भी लेख लिखा है उसे POSIX के ज्ञान पर काम करने की आवश्यकता है; वे इस धारणा पर निष्क्रिय रूप से भरोसा कर रहे हैं कि अगला खुला एफडी 2 होगा; यह काम करने की गारंटी नहीं है और वास्तव में गलत चीज करेगा यदि एक और थ्रेड एक ही समय में एक फ़ाइल खोलता है। पहला 'क्लोज़' कॉल और 'डुप्लिक' को 'dup2 (fd, STDERR_FILENO) 'से बदला जाना चाहिए। – asveikau