2016-11-05 18 views
9
निम्नलिखित सेटअप ( gist) के साथ

:स्विफ्ट

Package.swift:

import PackageDescription 

let package = Package(
    name: "foo", 
    dependencies: [ 
     .Package(url: "https://github.com/rxwei/LLVM_C", majorVersion: 1, minor: 0) 
    ] 
) 

"त्रुटि: ऑटो आयात में: एएसटी संदर्भ से मॉड्यूल 'foo' पाने में विफल" makefile:

all: 
    @swift build \ 
     -Xcc -I`llvm-config --includedir` \ 
     -Xlinker -L`llvm-config --libdir` \ 
     -Xlinker -rpath -Xlinker `llvm-config --libdir` 

main.swift:

import LLVM_C.Core 

func foo(_ a: Int) { 
    let b = a * a 
    print(b) 
} 

foo(4) 

एक डिबगर में make साथ एक निष्पादन संकलन और निष्पादन योग्य शुरू करने के बाद, मैं किसी भी चरों के मान मुद्रित नहीं कर सकते:

(lldb) b foo 
Breakpoint 1: where = foo`foo.foo (Swift.Int) ->() + 12 at main.swift:4, address = 0x00000001000014dc 
(lldb) r 
Process 14376 launched: '/Users/emlai/Code/foo/.build/debug/foo' (x86_64) 
Process 14376 stopped 
* thread #1: tid = 0x226d5, 0x00000001000014dc foo`foo(a=4) ->() + 12 at main.swift:4, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 
    frame #0: 0x00000001000014dc foo`foo(a=4) ->() + 12 at main.swift:4 
    1 import LLVM_C.Core 
    2  
    3 func foo(_ a: Int) { 
-> 4  let b = a * a 
    5  print(b) 
    6 } 
    7  
(lldb) p a 
error: in auto-import: 
failed to get module 'foo' from AST context: 

(lldb) p a 
Shared Swift state for foo has developed fatal errors and is being discarded. 
REPL definitions and persistent names/types will be lost. 
warning: Swift error in module foo. 
Debug info from this module will be unavailable in the debugger. 

error: in auto-import: 
failed to get module 'foo' from AST context 

अगर मैं बाहर टिप्पणी import LLVM_C.Core लाइन, सब कुछ ठीक से काम करता है।

यह मुझे मेरी परियोजना को डीबग करने और आगे बढ़ने से रोक रहा है। मैं इसे कैसे ठीक करूं?

उत्तर

2

इस समस्या के लिए वेब खोजना केवल "इसकी एलएलडीबी बग" के परिणामस्वरूप है। डीबग करने के लिए मुझे मिला एकमात्र तरीका परीक्षण डीबग करना है। लेकिन AFAIK आप अपने main.swift स्क्रिप्ट के साथ परीक्षण नहीं चला सकते हैं। इसका परिणाम multiple definition of 'main' है।

तो बस यहां दिए गए निर्देशों का पालन करें https://swift.org/getting-started/#using-the-package-manager (swift package init या मैन्युअल के साथ) परीक्षण के साथ पैकेज के लिए आवश्यक फ़ाइल पदानुक्रम बनाने के लिए, कुछ परीक्षण लिखते हैं, swift test चलाने के लिए और, अंत में, lldb .build/debug/fooPackageTests.xctest (<binary name>PackageTests.xctest परीक्षण चलाने के लिए बाइनरी फ़ाइल है)। मुझे लगता है कि इसे सामान्य बाइनरी के बजाए कुछ बिंदुओं में अलग-अलग संकलित किया जाता है। कम से कम मेरे मामले में काम किया :)

डीबगिंग के साथ शुभकामनाएं! :)