【问题标题】:Matlab mex file crashes on windows - cannot debugMatlab mex文件在Windows上崩溃-无法调试
【发布时间】:2013-11-14 14:52:17
【问题描述】:

我有一个我编译的 mex 文件

>> mex -g myMex.cpp

我在几个输入上运行它,它工作得很好。
突然之间,对于特定的输入,它会导致机器崩溃!

按照on how to debug using visual studio 的说明,我将调试器附加到 Matlab 进程,并在我的mexFunctionfirst 行放置了一个断点。

但是,当我厌倦了调试 Visual Studio 并且 Matlab 崩溃之前中断点在 mex C++ 代码中被击中!

有没有人遇到过这样令人沮丧的行为?如果崩溃发生在我可以在调试器中停止之前,我该如何调试?

【问题讨论】:

  • 在 Win7 - MatLab 2013a 中附加相同的内容。我试图调试 Mexopencv。我什么也没找到,所以我放弃了。
  • @AlexandreBizeau 出于某种原因,Visual Studio 似乎不会在我的断点处停止(而是崩溃)。我怀疑我没有使用正确的编译/链接标志...我设法在旧的注释/打印/编译方法中找到了我的错误:(...
  • @Shai:你能想出一个我们可以测试的可重现的小案例吗?还请说明你的操作系统、MATLAB和VS版本。。崩溃整个机器是一个非常严重的错误!
  • 对我来说,它永远不会相同,有时 matlab 会因分段错误而崩溃。或者什么也没有发生,就像在 Visual Studio 和 matlab 中没有中断一样完美地运行代码而不会崩溃。我没有对这个问题进行太多调查。但我想知道该怎么做。我在不使用调试器的情况下解决了我的问题,但我以后肯定会需要。
  • @AlexandreBizeau:当您在调试模式下编译时,您将链接到不同版本的 CRT,并启用额外检查以检测内存损坏和此类错误。这通常解释了您在使用优化与调试标志进行编译时看到的差异。至于调试mexopencv,通常有助于自己从源代码编译 OpenCV,而不是依赖提供的预编译二进制文件。

标签: matlab runtime-error visual-studio-debugging mex


【解决方案1】:

不是您真正要寻找的答案,但由于与您描述的问题类似,我一直发现 Matlab MEX 文件的 visual 调试非常繁琐,比实际操作更麻烦值得。通过在 mexFunction 主例程中插入 mexPrintf 和/或 return 语句可能会更快地找到问题。

【讨论】:

  • 感谢您的回答。我使用 mex 文件已经有好几年了,在可视化调试方面从未遇到过任何问题。事实上,我更喜欢这种方法而不是其他任何方法,一旦我在 Linux 机器上也没有这些功能,这让我很困扰。
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多