स्रोत कोड में, अगर मैं करता हूं:

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