有個應用程序一運行就崩潰,如今你拿到了源碼。在調試器中運行10次以後,發現該應用每次崩潰的位置都不同。這個應用只有一個線程,而且只調用C標準庫函數。到底是什麼樣的編程錯誤致使程序崩潰?該如何逐一測試每種錯誤?編程
解答函數
隨機崩潰的常見緣由:工具
1)隨機變量:某個隨機變量或可變份量,程序每次執行時取值不定。包括:用戶輸入、程序生成的隨機數或當前時間等。測試
2)未初始化變量:在某些語言中,該變量可能含有任意值。這個變量取不一樣值可能致使代碼每次執行路徑有所不一樣。線程
3)內存泄露:可能存在內存溢出。每次運行時引起問題的可疑進程隨機不定,這與當時運行的進程數量有關。另外還包括堆溢出或棧內數據被破壞。調試
4)外部以來:可能依賴別的應用程序、機器或資源。要是存在多處依賴,程序就有可能在任意位置崩潰。進程
解決:內存
1)關閉系統中其餘全部應用,仔細追蹤資源使用。若是該程序有些部分能夠關掉,就設法關掉。資源
2)在另一臺機器上運行該程序,看看是否重現同一問題。源碼
3)藉助工具檢查特定狀況。例如,能夠利用運行時工具來檢查未初始化變量。