iPhone Simulator生成的崩溃日志?


96

iPhone Simulator会生成任何崩溃日志吗?

模拟器会崩溃很多,但不会在控制台中留下任何痕迹……崩溃日志将非常有用。


2
我不太明白为什么您需要崩溃日志。当模拟器中的应用程序崩溃但在停止调试之前,请在gdb提示符下为“ backtrace”键入“ bt”-您将获得崩溃日志中显示的内容。(没有意识到这里存在死灵问题,错过了上一年)
Matthew Frederick 2010年

3
如果崩溃仅在调试器未附加时发生,则需要日志。
Ian1971

你是对的。这很有道理!
猛禽

您还可以在Xcode(cmd-8)的“报告导航器”中查看调试日志(包括lldb命令的输出)。这对于查看先前运行的调试输出也很有用。如果未附加调试器,则显然无法正常工作。
塞巴斯蒂安·马丁

2
调试日志与崩溃日志不同,尽管两个日志都可用于调试问题。
Raptor

Answers:


157

控制台将显示NSLog()模拟器中运行的应用程序的输出。崩溃日志保存到文件中。

我在主目录下找到了一些

~/Library/Logs/DiagnosticReports/

它们的文件扩展名为 .crash

我还没有弄清楚的是,即使调试器捕获了EXC_BAD_ACCESS信号,如何使它们生成。


更新资料

当前,(crash)登录(OSX 10.11.6)~/Library/Logs/DiagnosticReports模拟器本身崩溃的时间应用程序崩溃的日志(但仿真器设备仍能正常运行)位于:

〜/库/日志/ CoreSimulator

每次崩溃时,都有一个具有唯一ID的子文件夹。按日期排序,以便您最近的崩溃是第一个子文件夹。在其中,首先查看stderr.logsystem.log

也直接在下面CoreSimulator,请参阅CoreSimulator.logSimulator.log


知道为什么将这些日志写入文件而不是显示在控制台中吗?谢谢您的信息,顺便说一句。
AQUA

11
我的iPhone或iPad模拟器中的崩溃报告都没有显示在此目录下,也许这个答案需要更新?
贾斯汀

3
也许确实需要进行更新,但是投反对票并不是鼓励它的一种非常有礼貌的方式。
ohhorob

2
我在提到的目录中找到了崩溃报告,但是只有一个报告,它不是最新的(即,我一直在应用程序中尝试一些操作,并且崩溃了)。崩溃都是一样的,所以这不是问题,但是我想知道是否通常是这样?
Samik R

10
贾斯汀和奥霍罗布都是正确的。您需要在没有Xcode的情况下在模拟器上启动该应用,并重现崩溃以查看日志~/Library/Logs/DiagnosticReports/
Dave Chambers

20

我非常确定您可以在实用程序中的OS X控制台应用程序中看到此内容。如果我错了,请务必对我投反对票,因此我将其删除。


更新:

具体来说(自OSX 10.11.6起),

当应用在模拟器上崩溃时,会将子文件夹(具有唯一ID)添加到:

〜/库/日志/ CoreSimulator

其中,首先检查stderr.logsystem.log

当模拟器本身崩溃时,子文件夹将添加到:

〜/图书馆/日志/诊断报告

不要将此路径与

/图书馆/日志

~开始时缺少),其中包含有关您的Mac的不同报告。



似乎它仅适用于iPhone设备,而不适用于模拟器。如果我错了,请纠正我。
猛禽队

7
可以通过按Cmd- /或使用“调试/打开系统日志...”菜单选项从模拟器中打开控制台。
lambmj 2014年

5

这是在特殊情况下对我有用的东西...我的应用因SIGKILL终止而崩溃。我会在main.m中看到异常几秒钟,然后该应用程序将终止运行-因此,没有机会进行追溯。

我在“模拟器将其崩溃日志存储在哪里”上进行了大量搜索,但从未设法找到答案。但是,以下技巧非常有用,我能够即时获取崩溃日志:

基本上,打开/Applications/Utilities/CrashReporterPrefs.app并将设置更改为“ Developer”。这将导致CrashReporter在应用崩溃后显示带有崩溃日志的弹出窗口。

我在Apple提供的此文档的“查看iOS模拟器控制台和崩溃日志”部分中找到了此文件:http : //developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application。 html


顺便说一句,原来问题SIGKILL,我正在研究的竟然是一个非问题:stackoverflow.com/questions/7901262/...
dana_a

我应该指出,“应用程序/实用工具”中没有CrashReporterPrefs应用程序,但是我进行了搜索并能够在其他地方找到该应用程序。
贾斯汀

@Justin你在哪里找到的?
Ohad Schneider 2015年

1
请注意,上述工具可从Xcode中以名为“ Xcode的其他工具”的捆绑软件从developer.apple.com/download/more/…–
markshiz

1

这更加可靠。仅需几个步骤,我就可以找到源行号和方法名:

  1. cd到具有.app和.dSYM文件的目录
  2. 运行/Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  3. 在上设置打印asm-demangle
  4. 在上设置打印符号文件名
  5. p / a 0×00015c64->地址,方法是在“控制台”应用程序中打开崩溃日志,或双击.crash文件。

3
我不太明白为什么您需要崩溃日志。当模拟器中的应用程序崩溃但在停止调试之前,请在gdb提示符下为“ backtrace”键入“ bt”-您将获得崩溃日志中显示的内容。
马修·弗雷德里克

此方法非常适合来自客户端电话的崩溃日志。
Gamma-Point

1

崩溃崩溃日志将显示在〜/ Library / Logs / CrashReporter下。

  • 如果iPhone模拟器程序崩溃(而不是模拟器中运行的iPhone应用程序),则iPhoneSimulator会有一个条目。
  • 如果模拟器中的iPhone App崩溃,则崩溃日志将与该应用程序的显示名称一起出现。

当Xcode从连接的设备获取崩溃日志时,它将它们存储在〜/ Library / Logs / CrashReporter / MobileDevice的子文件夹中


这是一年多以后的事,但我在〜/ Library / Logs / DiagnosticReports中看到“模拟器内的应用”崩溃了,看起来像是:MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob

0

对我来说,这是我添加到调试器监视窗口的一个表达式。当遇到断点时,错误的表达导致XCode发生段错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.