簡體   English   中英

調試時QFileDialog :: getOpenFileName崩潰,顯然是由項目名稱引起的?

[英]QFileDialog::getOpenFileName crashes when debugging, apparently caused by project name?

我遇到了一個令我困惑的問題。 我在Windows 7上使用Qt Creator 3.1.2和Qt 5.3,使用MSVC 10.0編譯器和Windows 8.1調試工具中的CDB。 (不確定我是否應該尋找特定於Windows 7的調試器,但直到現在我還沒有遇到任何問題)。

問題:當我在調試時嘗試使用QFileDialog :: getOpenFileName()時,程序會拋出異常。

劣勢停止了,因為它引發了異常。

在線程0中停止:異常位於0x745f7736,代碼:0xc0000005:讀取訪問沖突位於:0x0,標志= 0x0(第一次機會)。

發布/調試版本無關緊要。 如果我正在運行調試器,它會崩潰。 如果我不是,那就有效。 我嘗試了很多不同的東西來試圖弄清楚為什么會發生這種情況 - 我將getOpenFileName移動到程序的不同部分,我嘗試更改/刪除函數調用上的參數,我基本上刪除了所有代碼,除了顯示此文件對話框所需的最低限度 - 一個QApplication和一個主窗口,當單擊菜單欄項時調用getOpenFileName()。 沒有任何效果。

然后我創建了一個基本相同的新項目。 莫名其妙地 - 工作了。 所以后來亂搞了很多東西,並且從我的主項目中復制東西直到它再次開始崩潰,我最終找到了問題:顯然,它是.pro文件中“TARGET”設置的可執行文件名。 如果它設置為PrimeWorldEditor(我的應用程序的名稱),它會崩潰。 如果我將其更改為其他任何內容,則可行。

所以我的第一個想法是,有剩余的文件與可執行文件共享其名稱導致問題。 但是,清除構建文件夾,重建項目以及其他任何內容都無濟於事。

我已經用盡了可能導致問題的想法,並且我已經嘗試並且未能通過搜索找到任何其他文件,這些文件與可執行文件共享其名稱或指向它。 如果有人知道問題可能是什么,我真的很感激幫助。 我現在可以通過更改可執行文件的名稱解決它,但我真的想知道為什么會發生這種情況並修復它。

編輯:有些人要求代碼,所以這里是一個程序崩潰的例子。 再次,這只在運行調試器時崩潰,目標可執行文件名設置為PrimeWorldEditor。 在其他情況下,它按預期工作並打開getOpenFileName()對話框。

#include <QApplication>
#include <QFileDialog>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFileDialog::getOpenFileName();
    return 0;
}

我認為問題可能與我的設置有關,所以我不確定它是否易於重現。

編輯2:我想補充一點,我確實花了一段時間谷歌搜索試圖找到與該問題相關的任何信息。 我發現有幾個人似乎和我有同樣的問題, 就像這篇文章一樣 ,但這些帖子上沒有任何解決方案。

我有同樣的問題,解決方案是卸載git軟件,它在Windows資源管理器中創建了上下文菜單。

我在使用QFileDialog::getOpenFileName()時遇到了Visual Studio 2013 Debugger程序崩潰的問題:

讀取位置0xFEEEFEEE時訪問沖突

當我在沒有調試器的情況下運行程序或者在項目配置中設置組合上下文選項 - >調試器 - >與環境=“否”結合時,它沒有崩潰。

我重新安裝了Visual Studio,Qt並沒有任何幫助。

最后我刪除了當天安裝的git-software,並卸載了軟件; 然后程序不再在Debugger中崩潰了。

我使用的是Windows 64位計算機,但運行的是32位的Qt程序。 git軟件在Windows資源管理器中有一個上下文菜單,並以某種方式干擾了QFileDialog並導致了問題。

哇哇好吧。 出於某種原因,我在調用堆棧中注意到了DropboxExt_24。 所以我卸載了Dropbox應用程序,突然間,一切正常。 重新安裝它,一切仍然有效,所以問題解決了,我想?

我一直在Dropbox上托管我的代碼以保持備份,不確定這是否與問題有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM