我真的迷失在這裏。也許你們中的一些人可以指點我一個正確的方向。從DOS的Segfaults,但從GDB運行
我正在開發一個使用GCC而不是MinGW的ANSI C工具。該工具只能從命令行運行。可能只有在Windows機器上。它在本地闡述一些數據並生成供其他程序使用的文件。基本上它做了很多數學和一些文件處理。沒有什麼真的想象。我沒有發現它有必要在這裏發佈整個1000多行用於檢查...
我使用GCC -ansi進行編譯,確保連一個警告都不存在。隨着發展的發展,一切都運轉良好。但最近我開始(幾乎)隨機的段錯誤。我檢查了最後所做的更改,但沒有發現任何內容。我刪除了最後的變化,完全回到完美的工作狀態。仍然段錯誤。我逐行追溯。我回去閱讀並重新閱讀了搜索可能的指針/ malloc錯誤的整個代碼。我根本無法找到它經常失敗的原因,也是隨機的。
所以這裏是奇怪的事情 - 我用-g編譯它並運行GDB。
開始MSYS 變化dir其中的程序駐留 $ GDB generatore.exe(一-g編譯在DOS失敗) $運行
而且它完美的作品裏面GDB。我一步一步地走。逐行。完善。我試圖用大量的數據強調它。所有作品。無法重現錯誤。但是,如果相同的可執行文件通過DOS運行,則會失敗。
我懷疑某些指針有不可預知的行爲,但我無法在任何地方找到它。
有沒有人遇到類似的東西?我應該在哪裏檢查?另外,我對GDB並不熟悉,因爲它運行平穩,我能否以某種方式強制執行該控制以在DOS中找到原因而失敗?有沒有其他免費的Windows調試解決方案可以告訴我?我如何調試不可預知的行爲?
非常感謝您的關注, 格言
謝謝piokuc。我已經讀過關於valgrind是一個很棒的工具,但是我需要一點時間在這裏設置一個linux環境。絕對是我的下一步。非常感謝。 – MAXIM
@ user1885558我知道,安裝Linux看起來要花很多功夫,但這是值得的,有一個很好。您不會後悔:) – piokuc
獲得亞馬遜AWS賬戶,我運行Valgrind。發現〜40mb的泄漏內存...修正了這個問題。現在在兩個系統上穩定。我一遍又一遍地認識到,如果沒有Linux,你就無處可去。謝謝,piokuc! – MAXIM