我在LLDB上真的很新。我试图弄清楚为什么我的C应用程序有时会破坏分段错误。
我用-g编译了我的应用程序并启动了lldb指向二进制文件。所以我用“运行”代码运行应用程序,当它崩溃时,LLDB向我显示消息:
* thread #1: tid = 0x8817, 0x00007fffae0feb52 libsystem_c.dylib`strlen + 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00007fffae0feb52 libsystem_c.dylib`strlen + 18
libsystem_c.dylib`strlen:
-> 0x7fffae0feb52 <+18>: pcmpeqb (%rdi), %xmm0
0x7fffae0feb56 <+22>: pmovmskb %xmm0, %esi
0x7fffae0feb5a <+26>: andq $0xf, %rcx
0x7fffae0feb5e <+30>: orq $-0x1, %rax
我看到一个“教程”里面的人和我做了同样的事情,但是对于他来说,LLDB展示了他的C源代码并指出了崩溃的方向。对我来说,我只能看到这个我无法追踪的装配十六进制。
我做错了什么?
谢谢你们。
编辑:
忘了说我的应用程序每秒只在终端上打印c *字符。有时需要几分钟才能崩溃,有时会在几小时后崩溃。