1
当在Yosemite下调用时(在stderr上打印“段错误:11”)时,OS X二进制运行到段错误,但当使用lldb调用时,不会发生段错误,并且程序以错误结束代码0.在OS X上捕获与lldb的段错误
你有什么想法是什么原因可能,使用lldb时不会发生segfault?有没有办法在那里触发它(当它发生时停止执行,所以可以进行一些调试)?
当在Yosemite下调用时(在stderr上打印“段错误:11”)时,OS X二进制运行到段错误,但当使用lldb调用时,不会发生段错误,并且程序以错误结束代码0.在OS X上捕获与lldb的段错误
你有什么想法是什么原因可能,使用lldb时不会发生segfault?有没有办法在那里触发它(当它发生时停止执行,所以可以进行一些调试)?
尝试单独运行程序并附加到它。如果你的二进制文件被称为a.out
,你可以使用process attach --waitfor
命令是这样的:
term1$ lldb
(lldb) pr a -w a.out
term2$ a.out
LLDB将轮询进程表,直到a.out
启动 - 当它看到这个过程中,它会附加到它。在lldb终端中,c
(continue
)进程执行。
或者,您可能会在~/Library/Logs/DiagnosticReports/
的流程部门中有一个崩溃报告。这会告诉你在你的二进制文件崩溃的地方的回溯。您可能还想打开Console.app
并查看是否有任何消息在其崩溃的位置被记录到控制台。
谢谢,这对我工作! – muffel 2014-11-23 22:33:19