强行崩溃qml页面

时间:2016-08-11 15:53:13

标签: qt qml

我的应用程序将qml作为前端,将c ++作为后端  要检查一些问题,我想强行让qml崩溃。

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

2 个答案:

答案 0 :(得分:1)

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

enter image description here

应用程序将在崩溃时停止。然后,你可以查看你的筹码。

enter image description here

答案 1 :(得分:0)

QML不会崩溃:)

你无法真正制作一些纯粹的QML / JavaScript代码"崩溃",至少不同于你可以用C ++进行自拍的方式。

请记住,除了解释QML和JavaScript之外,任何错误通常都会生成QML警告。类似的东西:

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

这个错误会中断你在本地范围内执行的任何操作,可能搞乱一些绑定或者没有完全按照你的预期行事,但是它不会崩溃"你的QML申请。

但您可以随时崩溃您的应用

如果您向QML公开了一些C ++组件,您可以通过从QML上下文触发一些有缺陷的C ++代码从技术上将您的应用程序从QML中崩溃。但这与从C ++后端崩溃你的应用程序是一回事......

您可以捕获错误(本地)

在处理QML / JavaScript错误时,您可以使用try { ... } catch(e) { ... }机制在常规JavaScript代码中捕获这些错误,如Catch QML error message

中所示

您可以报告错误(全局)

即使不是灾难性的,QML中的错误也可能会影响QML UI的行为。防止这种情况的一种可能方法是为您编写测试UI,您可以通过各种方式来放置QML组件,以确保不会出现错误。

我们在测试代码中使用的一个技巧(也可以在生产中使用)是覆盖默认日志处理程序并注意QML错误和警告。这允许我们测试我们的QML组件(它们是否按预期运行?)并且还验证在这些测试期间没有生成警告。相关文档可在此处获取:http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler