2014-11-23 46 views
1

当在Yosemite下调用时(在stderr上打印“段错误:11”)时,OS X二进制运行到段错误,但当使用lldb调用时,不会发生段错误,并且程序以错误结束代码0.在OS X上捕获与lldb的段错误

你有什么想法是什么原因可能,使用lldb时不会发生segfault?有没有办法在那里触发它(当它发生时停止执行,所以可以进行一些调试)?

回答

3

尝试单独运行程序并附加到它。如果你的二进制文件被称为a.out,你可以使用process attach --waitfor命令是这样的:

term1$ lldb 
(lldb) pr a -w a.out 

term2$ a.out 

LLDB将轮询进程表,直到a.out启动 - 当它看到这个过程中,它会附加到它。在lldb终端中,ccontinue)进程执行。

或者,您可能会在~/Library/Logs/DiagnosticReports/的流程部门中有一个崩溃报告。这会告诉你在你的二进制文件崩溃的地方的回溯。您可能还想打开Console.app并查看是否有任何消息在其崩溃的位置被记录到控制台。

+0

谢谢,这对我工作! – muffel 2014-11-23 22:33:19