Macos 使用LLDB调试D程序的分段错误

Macos 使用LLDB调试D程序的分段错误,macos,debugging,d,lldb,dmd,Macos,Debugging,D,Lldb,Dmd,我目前正在使用LLDB在DMD编译器生成的可执行文件中调试Mac上的分段错误:11 问题是我很迷茫,因为我对调试工具不太熟悉 我所做的就是用二进制文件启动lldb,然后用适当的参数执行命令run。当应用程序崩溃时,我正在执行线程回溯,这是我得到的输出: * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x7ffeef3fffd0) frame #0: 0

我目前正在使用LLDB在DMD编译器生成的可执行文件中调试Mac上的
分段错误:11

问题是我很迷茫,因为我对调试工具不太熟悉

我所做的就是用二进制文件启动lldb,然后用适当的参数执行命令
run
。当应用程序崩溃时,我正在执行
线程回溯
,这是我得到的输出:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x7ffeef3fffd0)
    frame #0: 0x00000001003f59e0 arturo`_D2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCeQCeQCcQCnQBs12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQEgQEgQEeQEp10mallocTimelS_DQFiQFiQFgQFr10numMallocslTmTkTmTxQCzZQFcMFNbKmKkKmKxQDsZQDl + 8
arturo`_D2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCeQCeQCcQCnQBs12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQEgQEgQEeQEp10mallocTimelS_DQFiQFiQFgQFr10numMallocslTmTkTmTxQCzZQFcMFNbKmKkKmKxQDsZQDl:
->  0x1003f59e0 <+8>:  movq   %rbx, -0x50(%rbp)
    0x1003f59e4 <+12>: movq   %r12, -0x48(%rbp)
    0x1003f59e8 <+16>: movq   %r13, -0x40(%rbp)
    0x1003f59ec <+20>: movq   %r14, -0x38(%rbp)
Target 0: (arturo) stopped.
(lldb) thread traceback
invalid command 'thread traceback'.
(lldb) thread backtrace
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x7ffeef3fffd0)
  * frame #0: 0x00000001003f59e0 arturo`_D2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCeQCeQCcQCnQBs12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQEgQEgQEeQEp10mallocTimelS_DQFiQFiQFgQFr10numMallocslTmTkTmTxQCzZQFcMFNbKmKkKmKxQDsZQDl + 8
    frame #1: 0x00000001003ed77e arturo`_D2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkxC8TypeInfoZS4core6memory8BlkInfo_ + 122
    frame #2: 0x00000001003f87a7 arturo`gc_qalloc + 59
    frame #3: 0x00000001003e389f arturo`_D4core6memory2GC6qallocFNaNbmkxC8TypeInfoZSQBqQBo8BlkInfo_ + 43
    frame #4: 0x00000001000037f3 arturo`_D3std5array__T8AppenderTAyaZQo13ensureAddableMFmZ9__lambda3MFNaNbNeZS4core6memory8BlkInfo_ + 43
    frame #5: 0x000000010000372d arturo`_D3std5array__T8AppenderTAyaZQo13ensureAddableMFNaNbNfmZv + 269
    frame #6: 0x00000001001d6a18 arturo`_D3std5array__T8AppenderTAyaZQo__T3putTAxaZQjMFQiZ10bigDataFunMFNaNbNfmZAa + 24
    frame #7: 0x00000001001d69b1 arturo`_D3std5array__T8AppenderTAyaZQo__T3putTAxaZQjMFNaNbNfQoZv + 33
    frame #8: 0x00000001000057b1 arturo`_D3std6format__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCd5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb + 121
    frame #9: 0x0000000100023ab7 arturo`_D3std6format__T14formattedWriteTSQBg5array__T8AppenderTAyaZQoTaTQjZQCaFNaNfKQBsMxAaQBcZk + 103
    frame #10: 0x0000000100023990 arturo`_D3std6format__TQkTaTAyaZQtFNaNfxAaQoZQr + 88
    frame #11: 0x00000001001a1b6f arturo`_D5panic14getErrorStringFAyaQdAQgQdZQl + 1199
    frame #12: 0x00000001001a2073 arturo`_D5panic31WARN_AssignmentInsideExpression6__ctorMFAyaZCQCbQBy + 227
    frame #13: 0x00000001001a8847 arturo`_D6parser9statement9Statement7executeMFPC5value5ValuebZQp + 87
*thread#1,queue='com.apple.main thread',stop reason=EXC_BAD_访问(code=2,address=0x7ffeef3fffd0)
框架#0:0x00000001003f59e0 arturo`撸d2GC4implic12ConservativeQW14ConservativeEGC_9;T9runLockedS_DQCEqCqCqCqCNQBS12AlloconSyncomfNbkMKmXC8TypeInfoZpvs_DqEqEqEqEqEqEqFqFqFf10NummallocLTMTKTxQCZZZQCqCqCqFKKKKKxQDL+8
arturo ``实施保守型QW14保守型Egc运行锁定型Qceqcqcnbs12AlloconSyncomfNbkMkKmxC8TypeInfoZpvs ` DQegQeqeqeqe10合金化Qfqfr10NummallocLTMTKTMtqcqfNbkkKxqdqdl:
->0x1003f59e0:movq%rbx,-0x50(%rbp)
0x1003f59e4:movq%r12,-0x48(%rbp)
0x1003f59e8:movq%r13,-0x40(%rbp)
0x1003f59ec:movq%r14,-0x38(%rbp)
目标0:(阿图罗)停止。
(lldb)线程回溯
无效命令“线程回溯”。
(lldb)线程回溯
*线程#1,队列='com.apple.main thread',停止原因=执行错误访问(代码=2,地址=0x7ffeef3fffd0)
*框架#0:0x00000001003f59e0 arturo`撸d2GC4implic12ConservativeQW14ConservativeEGC_9;T9runLockedS_DQCEqCqCqCqCNQBS12AlloconSyncomfNbkMKmXC8TypeInfoZpvs_DqEqEqEqEqEqEqFqFqFf10NummallocLTMTKTxQCZZZQCqCqCqFKKKKKxQDL+8
帧#1:0x00000001003ed77e arturo` ` uD2GC4implic12保守QW14保守EGC6QALLOCMFNBMKXC8TypeInfoz4Core6内存8BLKINFO+122
帧#2:0x00000001003f87a7 arturo`gc#U qalloc+59
帧#3:0x00000001003e389f arturo`\u D4Core6Memory2GC6QAllocfnanBMKXC8TypeInfozSQBQBO8BLKINFO+43
帧#4:0x00000001000037f3 arturo`0; d3std5数组0; t8附录TayazQo13确保可读取blemfmz9_0;lambda3fnanbness4core6内存8blkinfo+43
帧#5:0x000000010000372d arturo`u D3std5数组uuu t8附录TayazQo13确保可读性fnanbnfmzv+269
帧#6:0x00000001001d6a18 arturo`u D3std5数组uuu t8附录TayazQo_uuuut3 Puttaxazqjmfkiz10BigDataFunmFnanbNfMzaa+24
帧#7:0x00000001001d69b1 arturo`u D3std5数组uuu t8附录TayazQo_uuuuut3 Puttaxazqjmfnanbnfqozv+33
帧#8:0x00000001000057b1 arturo`_D3STD6格式uu T10FormatSpecTaZQp uu T17WriteUptoNextSpectSQCD5数组uu T8附录TayazQOzBYMFNANLFKQBQZB+121
帧#9:0x0000000100023ab7 arturo`u D3STD6格式uuu T14格式化写入SQBG5数组uuuuuu T8附录TayazQotaQJZQCAFNANFKQBSMXAAQBCZK+103
帧#10:0x0000000100023990 arturo`_D3std6格式uu tqktatayazqtfnanfxaqozqr+88
帧#11:0x00000001001a1b6f arturo`\u D5pani14GetErrorStringFayaqdqdgqdzql+1199
帧#12:0x00000001001a2073 arturo`\u D5panic31WARN\u分配在表达式内6\uuuuuuuuuuuuuuMfayazCqcBqBy+227
帧#13:0x00000001001a8847 arturo`\u D6Parser9Statement9Statement7执行FPC5Value5ValueBZQP+87
知道去哪里找吗?这似乎与垃圾收集器有关,但仍不确定。可能是内存不足错误吗


任何指点都是非常受欢迎的

不,这不是内存不足,似乎你的程序正在访问内存,这不是正确的,就是不允许的。您需要了解哪些链事件导致生成错误的
0x7ffeef3fffd0
地址。我建议您至少确定d代码中的最后一刻,它仍能正常运行,不会崩溃。尝试在lldb中设置断点以缩小问题的范围。在我看来,它似乎在试图重新分配损坏的指针。