[英]c++ app crashing on non AVX CPUs
我有一個AVX優化的應用程序,我不需要與非AVX CPU兼容。 但是,我想在這些較舊的CPU上顯示一個干凈的錯誤對話框,而不是讓應用程序崩潰,因為這會導致客戶混淆。
在我的main()
我創建了QApplication
實例(我使用的是Qt框架),然后使用gcc __builtin_cpu_supports ("avx")
測試AVX。 如果失敗,我會顯示錯誤對話框。 事實證明這適用於簡單測試應用程序上的非AVX CPU。
但是,我們的(大型)應用程序在非AVX CPU上顯示對話框之前崩潰。
我懷疑:
問題是,我沒有非AVX系統正在進行調試,如果可能,我寧願避免購買。
您可以創建一個(非優化的)包裝器程序來執行功能測試,然后通過友好消息退出或執行您的應用程序。
允許QApplication
構造函數修改傳遞的參數,因此您需要獲取一個副本(或者不要在通過exec()
的路徑中使用任何Qt)。
像(從我的頭上):
int main(int argc, char **argv)
{
if (__builtin_cpu_supports ("avx")) {
execv("/the/real/program", argv);
perror("exec");
exit 1;
} else {
QApplication app(argc, argv);
QDialog d;
d.show();
return 1;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.