2016-08-11 51 views
0

我的应用程序有qml作为前端,C++作为后端。
要检查一些问题,我想强制使qml崩溃。强行崩溃qml页

主要是我感兴趣什么时候在客户端网站上qml崩溃时出现错误消息,以便我们可以更好地处理这些错误。 我已经尝试了一些东西,如在QML页面上分配空值或空指针,但它并没有使应用程序崩溃。
从C++端,我从QQmlApplicationEngine加载应用程序。 任何建议将有所帮助。

+0

退出足够了吗? ('Qt.quit();') – Velkan

+1

为了得到更好的安装程序,请概述你的意图以及你想通过“崩溃QML页面”来实现的目标。 –

+0

主要是我有兴趣知道当它崩溃时它抛出的错误信息 – samprat

回答

1

QML不会崩溃:)

你真的不能做一些纯QML/JavaScript代码“撞车”,至少不是可以拍摄自己的脚在C同样的方式++。

记住比QML和JavaScript解释,并且任何错误通常会生成QML警告。喜欢的东西:

qrc:/main.qml:33: ReferenceError: timer is not defined 

这个错误会打断你在本地范围内,可能烂摊子了几个绑定或没有做的正是你所期望的,无论进行操作,但它不会“崩溃”你的QML应用。

但你可以随时崩溃的应用程序

如果您揭露一些C++组件添加到您QML,技术上可以从你的QML上下文触发一些越野车的C++代码中的崩溃QML您的应用程序。但是,这是同样的事情,在你的C++后端崩溃您的应用程序....

您可以捕获错误(局部)

当QML/JavaScript错误处理,你可以捕捉这些错误,你以同样的方式将在常规的JavaScript代码,使用try { ... } catch(e) { ... }机制,如Catch QML error message

证明您可以报告错误(全球)

即使不是灾难性的,在你的QML的错误可能会影响您的QML UI的行为。防止这种情况的一种可能的方式是为UI编写测试,以各种方式提供QML组件,以确保不会出现错误。

我们在测试代码中使用的一个技巧(也可以在生产环境中工作)是覆盖默认日志处理程序并注意QML错误和警告。这使我们能够测试我们的QML组件(它们的行为是否与预期一样?),并验证在这些测试中没有产生警告。相关文档可在此处获得:http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler

1

您可以在Qt Creator中使用调试模式。

enter image description here

而当它崩溃的应用程序将停止。然后,你可以检查你的堆栈。

enter image description here