2016-08-11 33 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