【发布时间】:2013-11-14 14:52:17
【问题描述】:
我有一个我编译的 mex 文件
>> mex -g myMex.cpp
我在几个输入上运行它,它工作得很好。
突然之间,对于特定的输入,它会导致机器崩溃!
按照on how to debug using visual studio 的说明,我将调试器附加到 Matlab 进程,并在我的mexFunction 的 first 行放置了一个断点。
但是,当我厌倦了调试 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