我想在MATLAB R2011b中調試一個面向對象的應用程序,我沒有自己寫。爲此,我想在classdef
的方法中放置一個斷點。據我所知,這是允許的。然而,當我運行應用程序時,斷點神祕地消失。爲什麼MATLAB刪除我的classdef中的斷點?
我在clear
配置斷點,像這樣:
dbstop in clear
時看到clear
被調用。運行應用程序之前,我檢查了斷點的存在與dbstatus:
>> dbstatus
Breakpoint for Processor>Processor.setResult is on line 114.
Breakpoint for inputCompute is on line 30.
Breakpoint is set for m_interpreter>clear.
(有問題的斷點是在列表中的第一個)當我運行應用程序,在classdef斷點前消失首先要明確被稱爲:
>> rootFunction('configuration')
417 clear('Data');
K>> dbstatus
Breakpoint for inputCompute is on line 30.
Breakpoint is set for m_interpreter>clear.
要確定斷點被清除,我逐漸移動的斷點越來越接近根部函數的開始,發現問題的代碼行:
cd('./configs');
而且肯定 - 任何調用cd
,即使是間接的,也會清除classdef
中的斷點。這意味着run
完全一樣。這是令人生氣的行爲。 MATLAB爲什麼要這樣做?我如何避免這樣做?
我不能重新創建您所描述的行爲。你能否提供[SSCCE](http://sscce.org/)? –
@FlorianBrucker提供一個SSCCE很難......我需要一個classdef文件和一個主函數,所以需要兩個文件。我對OOP也很陌生,我必須做這個調試才能明白髮生了什麼。你說你不能重新創建我描述的行爲。你可以發佈你的SSCCE嗎?然後我可以在我的MATLAB安裝中進行測試並進行比較。 –
該類的m文件是否在MATLAB路徑或當前目錄中或兩者兼而有之?當使用MATLAB找到的代碼時,更改目錄可能會有奇怪的含義,因爲它存在於當前目錄中,噹噹前目錄也位於路徑上時,它也可能會感到困惑。 – kwatford