dbstop in
Конечно, вы можете перегрузить disp
или fprintf
, или вы можете просто сказать, отладчик остановится на этих функций с dbstop
. Затем используйте dbstack
, чтобы увидеть, где вы находитесь и как вы добрались туда. Все в порядке, что это встроенные модули без кода MATLAB. Он остановится прямо перед вызовом:
>> dbstop in disp
Warning: MATLAB debugger can only stop in MATLAB code files, and "libmwbuiltins>disp" is not a MATLAB code file.
Instead, the debugger will stop at the point right before "libmwbuiltins>disp" is called.
>> dbstop in fprintf
Warning: MATLAB debugger can only stop in MATLAB code files, and "libmwbuiltins>fprintf" is not a MATLAB code file.
Instead, the debugger will stop at the point right before "libmwbuiltins>fprintf" is called.
Хорошо выглядит!
Рассмотрим следующую тестовую функцию testdbstop
с вложенной функции fprintTest
:
function testdbstop
x=1;
disp(x)
fprintTest(x)
function fprintTest(x)
fprintf('%d\n',x);
end
end
Запуск из командной строки:
>> testdbstop
3 disp(x)
K>> dbstack
> In testdbstop at 3
K>> dbcont
1
6 fprintf('%d\n',x);
K>> dbstack
> In testdbstop>fprintTest at 6
In testdbstop at 4
K>> dbcont
1
Там у Вас есть это - дисп называется на линии 3 testdbstop.m
и fprintf
вызывается по строке 6 из testdbstop.m
в testdbstop>fprintTest
, вызывается по строке 4 из testdbstop
.
Примечание: Когда вы закончите, удалите виртуальные точки останова с помощью dbclear
(то есть dbclear in disp
и dbclear in fprintf
).
Спасибо! Это сделал трюк. –