У нас есть файлы matlab .m, которые были скомпилированы в DLL с помощью mcc. Это используется приложением с графическим интерфейсом C++, которое мы отлаживаем в Visual Studio. Когда мы доходим до вызова нашей функции Matlab, все, что мы можем сделать, это перешагнуть через нее. Как мы можем отлаживать код .m на уровне исходного кода?
Я подумал, что было бы легко добавить некоторые операторы «печати», которые в Matlab на самом деле называются «disp», и смотреть, как материал прокручивается в окне вывода VS. Но мы ничего не видим. Даже из printf() в исходном коде C++ или при запуске нашего приложения непосредственно из командной строки, а не в VS. Из Google и S.O. мы узнаем, что ничего, отправленное на стандартный вывод, никогда и нигде не появляется. (Этот вопрос актуален: Стандартный вывод Visual Studio 2012 C++, но у нас это не сработало.)
Я попробовал msgbox('бла-бла') в сценариях .m и пересобрал DLL. Ничего не появилось. Я не уверен, должно ли это работать, но наш код Matlab не выполнялся, или если ожидается, что msgbox не будет работать в этой ситуации, например, stdout.
Мы были бы довольны отладкой на основе печати. Точки останова и другие методы были бы хороши, но в настоящее время в этом нет необходимости.
Мы используем Matlab R2016b на Win7, Visual Studio 2015. У нас есть источник .m, используемый для создания DLL, и у нас есть источник для приложения с графическим интерфейсом, использующего DLL.