簡體   English   中英

在Visual Studio中調試mex函數

[英]Debug a mex function in Visual Studio

我正在嘗試將現有的C ++代碼包裝到MATLAB可調用函數中。 我正在使用Visual Studio 2013 生成MEX文件 MEX文件是正確創建的,我可以從MATLAB中調用它並來回傳遞參數而不會出現任何問題。

現在我想調試我的C ++邏輯,我似乎無法讓它工作。 我創建了叫我的功能一個m腳本,在調試的時候有Visual Studio中運行MATLAB -作為解釋在這里

當我按F5調試我的MEX文件時,Visual Studio運行MATLAB,然后非常快地退出調試模式,就像MATLAB進程終止一樣。 幾秒鍾 ,MATLAB開始運行代碼。 就好像我正在運行的MATLAB實例啟動另一個實例並終止,混淆了Visual Studio。

如何調試MEX功能?

UPDATE:Apparantly MATLAB的做法剛好,作為描述在這里 添加-wait參數使Visual Studio等到腳本運行完畢,但我設置的斷點不起作用 - 因為正在調試的進程不是加載DLL的進程。

結果<MATLABROOT>\\bin\\matlab.exe實際運行<MATLABROOT>\\bin\\w64\\matlab.exe 因此,如果我要求Visual Studio運行它,則會按預期觸發斷點。

在調試器下以這種方式運行MATLAB比任何其他方式慢很多 ,但至少現在我可以調試我的代碼。

您也可以像往常一樣運行MATLAB會話,然后將Visual Studio連接到正在運行的進程。 這在文檔中有更詳細的解釋。 這是一個快速摘要:

  • 編譯源MEX文件並啟用調試符號。
  • 在Visual Studio中打開源C / C ++文件,並放置一個斷點。
  • 啟動一個正常的MATLAB會話。 然后從Visual Studio,附加到正在運行的matlab.exe進程。
  • 最后從MATLAB運行MEX功能。 你應該在執行暫停時點擊斷點。

暫無
暫無

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

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