如何使用 Visual Studio 2010 调试 MATLAB .mex32/.mex64 文件

Posted

技术标签:

【中文标题】如何使用 Visual Studio 2010 调试 MATLAB .mex32/.mex64 文件【英文标题】:how to debug MATLAB .mex32/.mex64 files with Visual Studio 2010 【发布时间】:2012-11-28 17:28:40 【问题描述】:

我有一个与调试 .mex32/.mex64 文件有关的问题。假设现在我有一个名为 test.cpp 的文件:

#include "mex.h" 
#include <iostream>
void mexFunction(int nlhs, mxArray *plhs[],
    int nrhs, const mxArray *prhs[])

    mexPrintf("Hello Matlab, and this is a test program\n"); 
 

然后我可以使用 Visual Studio 2010 编译和构建test.mex64。然后在 matlab 中,我可以编写以下脚本来测试功能:

clc; 
test;

现在假设我要调试 test.mex64 函数,我应该怎么做?已采用以下程序,但未通过:

    使用 VS2010 在mexPrintf行的乞求处切换断点。 使用 VS2010 从 Debug->Attach to Process... 选择 MATLAB.exe。 运行 MATLAB 脚本clc; test;

我得到的错误信息如下:

The breakpoint will not currently be hit. No symbols have been loaded for this document. 

【问题讨论】:

您可能想查看this question。它处理 Linux 上的 mex 分析,但类似的想法应该在 Windows 上使用。诚然,分析有点不同,但您可以从那里开始。 【参考方案1】:

您是否使用调试选项“-g”构建了 mex 文件?

【讨论】:

【参考方案2】:

我找到了解决方案:当我创建 .mexw64 函数(在我们的例子中为 test.mexw64)时,我将它复制到了 MATLAB 工作目录。为了调试此函数,将 test.pdb 文件复制到 MATLAB 工作目录也很重要。完成后,我可以调试。

【讨论】:

以上是关于如何使用 Visual Studio 2010 调试 MATLAB .mex32/.mex64 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点

如何在 Visual Studio 2010 中使用互斥锁

使用 Visual C++ 编译器 (Visual Studio 2010) 的可变数组大小出错。如何规避这个问题?

在本地运行/调试时如何使用 Visual Studio 2010 配置转换?

Visual Studio 2010 - 如何使用系统环境变量?

visual studio 2010怎么查看函数