V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chopin1998519
V2EX  ›  Swift

Swift 如何像 Python 那样 崩溃了输出 backtrace 或者至少是哪行出错了。。。

  •  
  •   chopin1998519 · 231 天前 · 1482 次点击
    这是一个创建于 231 天前的主题,其中的信息可能已经有所发展或是发生改变。

    swift 新手

    写了一个 1000 多行的代码, 没有用 xcode 开发, 直接 vscode 撸的,

    运行时 直接 ./main.swift (代码首行 #!env swift ) 或者 swiftc main.swift -o main.bin , 然后 ./main.bin 运行

    现在程序大体稳定, 但是偶尔会崩溃一下, 崩溃时只是提示 crash 和很少信息, 搞不清楚哪里错误。

    也试过 swiftc -g main.swift -o main.bin 然后有 lldb ./main.bin , 再 run, crash 的时候提示 error: No auto repeat.com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
    (lldb) me #0: 0x0000000192db0154 CoreFoundationCFGetTypeID + 100

    就不会了。。。

    有没有可能像 python 那些,crash 了告诉我是哪行因为什么原因错掉的呢??

    谢谢各位大佬!

    4 条回复    2024-05-13 16:23:34 +08:00
    butanediol2d
        1
    butanediol2d  
       231 天前 via Android
    Swift 5.9 不是有这个了吗?
    https://www.swift.org/blog/swift-5.9-backtraces/
    chopin1998519
        2
    chopin1998519  
    OP
       231 天前
    @butanediol2d #1 我看到这个文章, 但是实在没搞懂 怎么启动这个?
    chopin1998519
        3
    chopin1998519  
    OP
       231 天前
    MsgType = text;
    To = "marco-18149700025";
    } msg: success
    Stack dump:
    0. Program arguments: /Library/Developer/CommandLineTools/usr/bin/swift-frontend -frontend -interpret ./main.swift -Xllvm -aarch64-use-tbi -en
    able-objc-interop -sdk /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -color-diagnostics -external-plugin-path /Library/Developer/CommandLineT
    ools/SDKs/MacOSX.sdk/usr/lib/swift/host/plugins#/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin/swift-plugin-server -external-plugin-pa
    th /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/local/lib/swift/host/plugins#/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin
    /swift-plugin-server -external-plugin-path /Library/Developer/Developer/usr/lib/swift/host/plugins#/Library/Developer/Developer/usr/bin/swift-plugi
    n-server -external-plugin-path /Library/Developer/Developer/usr/local/lib/swift/host/plugins#/Library/Developer/Developer/usr/bin/swift-plugin-serv
    er -plugin-path /Library/Developer/CommandLineTools/usr/lib/swift/host/plugins -plugin-path /Library/Developer/CommandLineTools/usr/local/lib/swift
    /host/plugins -target-sdk-version 14.4 -module-name main -- pin
    1. Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
    2. Compiling with the current language version
    3. While running user code "./main.swift"
    Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
    0 swift-frontend 0x00000001060eff3c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
    1 swift-frontend 0x00000001060ef0f8 llvm::sys::RunSignalHandlers() + 112
    2 swift-frontend 0x00000001060f0544 SignalHandler(int) + 360
    3 libsystem_platform.dylib 0x0000000192d5f584 _sigtramp + 56
    4 libsystem_platform.dylib 0xffff80010f473dac _sigtramp + 18446603334014027872
    5 libsystem_platform.dylib 0x000000010f473dac _sigtramp + 18446744071502383200
    6 libsystem_platform.dylib 0x000000010f478f28 _sigtramp + 18446744071502404060
    7 libsystem_platform.dylib 0x000000010f47248c _sigtramp + 18446744071502376768
    8 libsystem_platform.dylib 0x000000010f4794d0 _sigtramp + 18446744071502405508
    9 libsystem_platform.dylib 0x000000010f47c154 _sigtramp + 18446744071502416904
    10 libsystem_platform.dylib 0x000000010f47282c _sigtramp + 18446744071502377696
    11 libsystem_platform.dylib 0x000000010f470210 _sigtramp + 18446744071502367940
    12 libsystem_platform.dylib 0x000000010f470010 _sigtramp + 18446744071502367428
    13 swift-frontend 0x0000000100b17e04 llvm::orc::runAsMain(int (*)(int, char**), llvm::ArrayRef<std::__1::basic_string<char, std::__1::cha
    r_traits<char>, std::__1::allocator<char>>>, llvm::Optional<llvm::StringRef>) + 1344
    14 swift-frontend 0x0000000100a4e01c swift::SwiftJIT::runMain(llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, st
    d::__1::allocator<char>>>) + 168
    15 swift-frontend 0x0000000100a5c19c swift::RunImmediately(swift::CompilerInstance&, std::__1::vector<std::__1::basic_string<char, std::_
    _1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocato
    r<char>>>> const&, swift::IRGenOptions const&, swift::SILOptions const&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SIL
    Module>>&&) + 1028
    16 swift-frontend 0x00000001009f3e90 processCommandLineAndRunImmediately(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule,
    std::__1::default_delete<swift::SILModule>>&&, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::FrontendObserver*, int&) + 624
    17 swift-frontend 0x00000001009ee210 performCompileStepsPostSILGen(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule, std::
    __1::default_delete<swift::SILModule>>, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift
    ::FrontendObserver*) + 1760
    18 swift-frontend 0x00000001009eda18 swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 2100
    19 swift-frontend 0x00000001009f1f0c performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 3616
    20 swift-frontend 0x00000001009ef6d0 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) +
    4968
    21 swift-frontend 0x000000010097ee8c swift::mainEntry(int, char const**) + 2612
    22 dyld 0x00000001929a60e0 start + 2360

    比如一次 crash, 结果是这样的。。并没有看到出错行号
    chopin1998519
        4
    chopin1998519  
    OP
       231 天前
    我终于会了。。。。谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1214 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:08 · PVG 02:08 · LAX 10:08 · JFK 13:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.