Можно ли отлаживать код mex с помощью Eclipse?

Я пытаюсь написать некоторый mex-код, но это больно отлаживать его на консоли с помощью gbd. Можно ли использовать Eclipse или графический интерфейс Matlab? Если это не выполнимые методы, каков наилучший способ написания mex-кода, который обеспечивает хорошие возможности отладки?

3 ответа

Отладка файлов MEX в C/С++ в gdb уже всесторонне рассмотрена в официальной документации поэтому мое предложение - попытаться интегрировать gdb с Eclipse CDT.

Там много информации о том, как это сделать правильно, поэтому я не буду повторять все здесь. Лучший учебник, который я знаю, представляет собой двухчастное руководство IBM, "Взаимодействие с отладчиком CDT" :

Я думаю, что часть 2 - это то, что вам действительно нужно. В принципе, вам нужно установить плагин и настроить его в Eclipse.

Здесь также есть несколько связанных вопросов об этом даже здесь, в StackOverflow:

Я еще не пробовал, поэтому надеюсь, что это сработает.


Вот мое решение, которое работает в Ubuntu 12.04, Matlab R2012b и Eclipse IDE для разработчиков C/С++ разработчиков Kepler Release.

  • В Eclipse откройте "Debug Configurations" из вкладки run. Затем создайте новое "приложение C/С++".
  • В "Main" -tab введите правильный путь к исполняемому файлу matlab в "Приложении C/С++" (мой "/usr/local/MATLAB/R2012b/bin/glnxa64/MATLAB" ПРИМЕЧАНИЕ: не MATLABPATH/бен/MATLAB).
  • В "Аргументах" -tab добавить "-nojvm" в качестве аргументов программы.
  • В "Environment" -tab добавить переменную "MATLAB_DEBUG" со значением "gdb"
  • Нажмите "Применить" и "Отладить"
  • "Консоль Matlab" откроется в представлении "Консоль".
  • Напишите в этой консоли "dbmex on". Это позволяет отлаживать.
  • Запустите файл mex! (Matlab остановится при загрузке каждого нового файла mex)
  • Получайте удовольствие от отладки!: -)


На платформе Windows: Лучший способ (по моему опыту) отлаживать код mex - использовать Visual Studio. Здесь ссылка о том, как это сделать.

Другие платформы (Linux/Mac): Боюсь, у меня нет хорошего способа сделать это отдельно от gdb (что совсем не забавно).

licensed under cc by-sa 3.0 with attribution.