Avatar
結論から言うと、swift コマンドで実行した場合はスクリプト側の行番号などはスタックトレースに表示できません。swift コマンドでの実行にこだわりがなければ、 swiftc -g foo.swift でデバッグ情報付きの実行ファイルを作って、lldbなどで実行した上で、クラッシュ時のバックトレースをみるのが良いと思います。
5:07 AM
こんなかんじです tmp.naXATKx4$ swiftc foo.swift -g foo.swift:2:2: warning: expression of type 'Int' is unused a[0] ~^~~ foo.swift:2:2: warning: expression of type 'Int' is unused a[0] ~^~~ tmp.naXATKx4$ lldb ./foo (lldb) target create "./foo" Current executable set to '/var/folders/k2/q6yzck31253_q1j4kxkzq5jh0000gn/T/tmp.naXATKx4/foo' (arm64). (lldb) run Process 11150 launched: '/var/folders/k2/q6yzck31253_q1j4kxkzq5jh0000gn/T/tmp.naXATKx4/foo' (arm64) Swift/ContiguousArrayBuffer.swift:600: Fatal error: Index out of range 2022-11-30 14:06:07.610207+0900 foo[11150:3677660] Swift/ContiguousArrayBuffer.swift:600: Fatal error: Index out of range Process 11150 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = Fatal error: Index out of range frame #0: 0x0000000193d93ae8 libswiftCore.dylib`_swift_runtime_on_report libswiftCore.dylib`: -> 0x193d93ae8 <+0>: ret libswiftCore.dylib`: 0x193d93aec <+0>: b 0x193d93ae8 ; _swift_runtime_on_report libswiftCore.dylib`: 0x193d93af0 <+0>: adrp x8, 308504 0x193d93af4 <+4>: ldrb w0, [x8, #0x6dc] Target 0: (foo) stopped. (lldb) thread backtrace * thread #1, queue = 'com.apple.main-thread', stop reason = Fatal error: Index out of range ... frame #8: 0x0000000100003f88 foo`main at foo.swift:2:2 frame #9: 0x00000001859a7e50 dyld`start + 2544 (lldb)