我目前正在開發一個帶有CUDA功能的mex文件,以便在MATLAB中使用。當我做錯了什麼(例如錯誤的指針或類似的東西)時,MATLAB總是崩潰(windows會提示我結束,發送報告進行數學工作或嘗試繼續)。有沒有辦法來防止這種情況發生?這樣開發真的很煩人,但是你可能知道自己:幾乎沒有人可以在沒有「試錯」的情況下編寫完美的代碼...... 迄今爲止感謝!如何停止使用CUDA功能(錯誤)mex文件執行時Matlab崩潰
7
A
回答
3
4
據我所知,沒有辦法阻止Matlab崩潰mex錯誤。但是你可能能夠將一個調試器附加到Matlab過程並逐步完成代碼。
我知道這樣的事實,如果你的代碼是在你加載到Matlab的外部DLL的話。我不確定這是否適用於mex文件。
+0
嗯可惜不是這樣,因爲在開發我還沒有完成的東西時這種情況經常發生:( – tim 2011-05-12 19:55:04
1
您可以通過以下過程調試Matlab mexfiles,包括使用Visual Studio和NVIDIA Nsight for Visual Studio的CUDA代碼。
- 定義系統環境變量NSIGHT_CUDA_DEBUGGER並將其設置爲。
- 啓動Matlab。
- 推出NVIDIA Nsight。右鍵單擊任務欄上的Nsight Monitor圖標,然後選擇選項。選擇CUDA選項卡。對於選件將此顯示器用於CUDA附件,單擊下拉菜單並選擇True。
- 在Visual Studio中打開項目,設置斷點並編譯它。
- 前往工具 - >附加到流程。
- 單擊Transport字段旁邊的下拉菜單,然後選擇Nsight GPU調試器。
- 確保您的主機名稱已列在限定符字段中。 請注意,該欄位默認爲空白;您將不得不在第一次打開此對話框時手動選擇機器名稱。
- 當您在限定符字段中輸入計算機的主機名時,可用進程列表將出現在對話框中。 CUDA使用情況下可能附帶的流程將與「類型」列中列出的CUDA一起顯示。如果某個進程灰顯,並且CUDA列在類型列中,則該列已被調試,因此它不可附着。在CUDA中類型列中灰顯的進程表示在調試過程中沒有使用CUDA。可能會附加的進程將正常顯示,並且將啓用按鈕。
- 確保Matlab的CUDA在Type列中並選擇它。
- 從Matlab命令行,調用在CUDA mexfile中定義的函數。然後執行將停止在第一個斷點處並且可以開始調試。
+0
對我來說有點晚了,但謝謝雖然f或你的答案。希望這有助於他在遇到這個問題時:) – tim 2013-11-22 17:54:49
相關問題
- 1. 執行mex文件時MATLAB崩潰
- 2. 卸載已使用CUDA內存的mex文件時,MATLAB崩潰
- 3. mex文件崩潰了,如何在matlab中使用MATLAB_MEM_MGR?
- 4. MATLAB執行半色調mex包裝函數時崩潰?
- 5. 使用一些數據運行mex函數時,Matlab崩潰
- 6. Matlab R2016a Mex文件錯誤
- 7. FORTRAN-MATLAB MEX文件錯誤
- 8. 在可執行文件上重複運行GDB(並停止崩潰/錯誤)
- 9. Matlab的MEX文件在Windows崩潰 - 不能調試
- 10. MATLAB在mex文件中到達mxSetPr時崩潰
- 11. 從Matlab寫入mex文件到CUDA(CUSPARSE)
- 12. Rails停止執行功能
- 13. 運行可執行文件.jar文件崩潰/錯誤
- 14. 停止VBA來執行時的功能
- 15. MATLAB 32位可執行文件與優化工具箱的功能崩潰
- 16. CUDA和MATLAB:MEX文件在清除MATLAB時崩潰
- 17. 不能停止程序崩潰用戶輸入的錯誤文件
- 18. 瀏覽器停止/崩潰是否停止腳本執行?
- 19. 在MEX文件中斷言會導致Matlab崩潰
- 20. Mex文件輸出在Matlab中編譯後崩潰
- 21. 錯誤,同時在Matlab 11.11上編譯Matlab mex文件R2011a
- 22. 如果條件使用jquery停止崩潰('隱藏')功能 - 引導3
- 23. CUDA停止錯誤我有
- 24. 當文件使用fopen時,matlab崩潰時沒有dump文件
- 25. 在MATLAB MEX文件中使用Thrust運行時鏈接程序錯誤
- 26. C++時間類沒有編譯錯誤,執行停止,應用崩潰checkDay函數中的錯誤
- 27. 停止javascript執行時捕捉錯誤
- 28. 錯誤在Matlab中使用DGESV mex
- 29. 停止MySQLdb崩潰
- 30. 如何在執行某個其他功能時停止某個功能?
這不會使matlab崩潰嗎?以及如何附加調試器?對不起,這是對我來說一些新的東西...... – tim 2011-05-13 09:55:08
@Col當然,Matlab的內存管理器非常脆弱,我創建了非常奇怪的錯誤,但其中許多錯誤會被捕獲,然後從命令行運行Matlab,從調試器,彷彿你在調試Matlab本身 – 2011-05-13 13:19:33
'-g'絕對不能阻止由於mex錯誤導致的Matlab崩潰,我很驚訝這是一個被接受的答案,'-g'確實可以幫助找到這個問題,但建議使用一個調試器似乎幾乎不言而喻。 – patrickvacek 2013-11-22 17:11:48