eml*_*lai 9 debugging llvm lldb swift swift3
通过以下设置(要点):
Package.swift:
import PackageDescription
let package = Package(
name: "foo",
dependencies: [
.Package(url: "https://github.com/rxwei/LLVM_C", majorVersion: 1, minor: 0)
]
)
Run Code Online (Sandbox Code Playgroud)
Makefile文件:
all:
@swift build \
-Xcc -I`llvm-config --includedir` \
-Xlinker -L`llvm-config --libdir` \
-Xlinker -rpath -Xlinker `llvm-config --libdir`
Run Code Online (Sandbox Code Playgroud)
main.swift:
import LLVM_C.Core
func foo(_ a: Int) {
let b = a * a
print(b)
}
foo(4)
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该import LLVM_C.Core行,一切正常.
这使我无法调试我的项目并取得进展.我怎样才能解决这个问题?
在网络上搜索此问题只会得到“its a lldb bug”。我发现调试的唯一方法是调试测试。但据我所知,您无法使用自己的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是用于运行测试的二进制文件)。我想它在某些方面的编译方式与常见的二进制文件不同。至少这对我来说有效:)
祝调试顺利!:)
| 归档时间: |
|
| 查看次数: |
3394 次 |
| 最近记录: |