मैं कुछ बिंदुओं के दौरान कॉल ट्रेस लॉग करना चाहूंगा, जैसे विफल दावे, या बिना अपवाद अपवाद।
मैं कुछ बिंदुओं के दौरान कॉल ट्रेस लॉग करना चाहूंगा, जैसे विफल दावे, या बिना अपवाद अपवाद।
जवाबों:
n13 का जवाब काफी काम नहीं आया - मैंने इसे इसके साथ आने के लिए थोड़ा संशोधित किया
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
int retval;
@try{
retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
@catch (NSException *exception)
{
NSLog(@"Gosh!!! %@", [exception callStackSymbols]);
@throw;
}
return retval;
}
}
NSLog(@"[Error] - %@ %@", exception.name, exception.reason);
यदि आप वास्तविक अपवाद भी चाहते हैं तो आप जोड़ सकते हैं
कोको पहले से ही कंसोल में बिना किसी अपवाद के स्टैक ट्रेस लॉग करता है, हालांकि वे सिर्फ कच्चे मेमोरी एड्रेस हैं। यदि आप सांत्वना में प्रतीकात्मक जानकारी चाहते हैं तो Apple का कुछ नमूना कोड है।
यदि आप अपने कोड (और आप तेंदुए पर हैं) में एक मनमाना बिंदु पर स्टैक ट्रेस उत्पन्न करना चाहते हैं, तो बैकट्रेस मैन पेज देखें। तेंदुए से पहले, आपको वास्तव में कॉल स्टैक के माध्यम से खुद को खोदना था।
यह बहुत कुछ बताता है कि आपको क्या करना है।
अनिवार्य रूप से आपको लॉग इन करने के लिए एप्लिकेशन अपवाद हैंडलिंग सेट करने की आवश्यकता है, जैसे कुछ:
#import <ExceptionHandling/NSExceptionHandler.h>
[[NSExceptionHandler defaultExceptionHandler]
setExceptionHandlingMask: NSLogUncaughtExceptionMask |
NSLogUncaughtSystemExceptionMask |
NSLogUncaughtRuntimeErrorMask]
अपवादों के लिए, आप ऐसा करने के लिए अपवाद के userInfo शब्दकोश के NSStackTraceKey सदस्य का उपयोग कर सकते हैं। Apple की वेबसाइट पर अपवादों के लिए एक कार्यक्रम की प्रतिक्रिया को नियंत्रित करना देखें ।
backtrace
औरbacktrace_symbols
कार्यों का उपयोग करें ; बैकट्रेस (3) मैनपेज देखें।