Unity3D/Xcode:设备上无法获取调试日志,在控制台中看不到

29

我在Unity中遇到了一个奇怪的问题 - 当我将应用程序构建到我的设备上时,无法在控制台中显示Debug.Log()NSLog()调用的输出信息。

我尝试了以下方法:

  1. 使用启用“开发构建”和“脚本调试”选项从Unity构建到Xcode(尝试过“Build”和“Build and Run”,没有区别)。
  2. 从Xcode中,我尝试使用Product->Run(CMD+R)来构建并通过USB将设备连接到电脑上。我还尝试过Product->Archive并手动安装.ipa文件,但都没有生效。
  3. 已连接设备,并尝试从Xcode的默认控制台、选择设备下的“Console”以及使用iPhone Configuration Utility检索日志。

唯一的输出信息是由Unity在Xcode项目中生成的main.mm文件中的这一行:

NSLog(@"-> registered mono modules %p\n", &constsection);

我也没有看到项目中默认的其他日志和输出,比如在UnityAppController.mm文件中的以下行:

printf_console("-> applicationDidFinishLaunching()\n");
奇怪的是,我曾经在项目早期看到了所有这些日志和我的日志,但现在不再看到了。我尝试回退和恢复到早期版本,但仍然看不到任何日志。我还尝试构建一个新的Xcode项目并将其构建到我的设备中,但也没有成功。您有什么建议?我已经查看了尽可能多的其他主题,并尝试了几个建议,但迄今为止还没有找到任何东西。Unity关于注册mono模块的第一个调试日志可以接收到,但其他日志为什么会丢失呢?我找不到一个好的原因,这使得在设备上进行调试变得非常痛苦。供参考,我使用的是Unity 4.5.1和Xcode 5.1.1。

我之前在iOS升级(iOS 7.1?)后也遇到过类似的问题。但是那时候只有在产品->运行模式下才能读取日志,而在ipa或第二次运行时则无法读取。有时甚至在第一次运行时也不行。也许这个问题有关。你使用的是哪个版本的iOS?另外,在iphone配置实用工具中查看控制台,那时它比Xcode更常用。另外,这可能只是心理作用,但是断开并重新连接设备似乎有所帮助。 - Krzysztof Bociurko
我相信我的问题也是从那时开始的 - 几周前我升级到了iOS 7.1.2,意识到那个时候我无法再检索日志。不幸的是,我已经尝试使用iPhone配置实用程序来检查控制台,并重新启动了我的计算机以及手机,看看是否有帮助,但都没有成功。 - Retribution
也许是个愚蠢的猜测,但你有检查过玩家设置中的日志布尔值吗? - Smileynator
我能提供的最佳解决方案是使用资产商店中的选项之一,该选项允许将日志记录到屏幕上。我记得其中一个选项会钩入Debug.Log(),但我忘记了具体是哪个选项。 - Draco18s no longer trusts SE
使用由spacemadeness开发的Lunarconsole。 - user6930374
1个回答

1
你尝试过附加到Unity日志消息事件吗?
public Text logText; //someRandomUnityUITextThatIsShownOnScreen 

void Start(){
Application.logMessageReceived += HandleLog;        //can disable logging with Application.logMessageReceived -= HandleLog; 
}

void HandleLog(string logString, string stackTrace, LogType type)
{
  logText.text += "\n | " + logString; 
//of course you can use the logstring and stacktrace to do whatever you want, write into a debug txt file or smth.
}

如果那也不起作用,那么现在很可能是一个的bug。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接