स्रोत कोड में, अगर मैं करता हूं:
print("\(#file) \(#line) \(#function)")
मुझे आउटपुट मिलता है जैसे:
MyFile.swift 31 doFoo()
हालांकि, एलएलडीबी में ब्रेकपॉइंट से, अगर मैं ऐसा ही करता हूं:
(lldb) po "\(#file) \(#function) \(#line)"
मुझे समझ आ गया:
"<EXPR> $__lldb_expr(_:) 6"
क्या बाद वाले से पूर्व की तरह आउटपुट प्राप्त करने का कोई तरीका है? मुझे पता है कि आप यह कर सकते हैं:
(lldb) frame info
frame #0: 0x0000000102d92c46 MyApp `closure #2 in Client.fetchCart($0=(error_instance = 0x0000600000810be0 -> 0x0000000108e88cc0 (void *)0x0000000108e88ce8: __SwiftNativeNSError)) at Client+Cart.swift:21:23
... लेकिन वह आउटपुट बहुत गन्दा है। क्या इसे केवल फ़ाइल, लाइन और फ़ंक्शन तक साफ़ करने का कोई तरीका है?
1
Tres
8 जुलाई 2020, 03:11
1 उत्तर
सबसे बढ़िया उत्तर
आप फ़्रेम जानकारी प्रदर्शित करने के लिए कस्टम प्रारूप सेट कर सकते हैं। आप जो चाहते हैं, उसके लिए आप यह कर सकते हैं:
settings set frame-format "${line.file.basename} ${line.number} ${function.name-without-args}\n"
और फिर frame info
कोशिश करें। आपको कुछ ऐसा मिलेगा:
AppDelegate.swift 11 AppDelegate.application(_:didFinishLaunchingWithOptions:)
आप इस उत्तर का अनुसरण करके इस सेटिंग को स्थायी बना सकते हैं।
5
Sweeper
8 जुलाई 2020, 03:43