📄 vc下调试mex文件.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0113)http://bbs.sjtu.edu.cn/cgi-bin/bbsanc?path=/groups/GROUP_4/MathTools/DA6B7A1FF/D9BB618C8/D7EB33D16/M.1030198869.A -->
<HTML><HEAD><TITLE>SJTUBBS精华区文章</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK
href="VC下调试mex文件.files/bbstyle.css" rel=stylesheet type=text/css>
<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
<BODY>
<CENTER>
<TABLE class=title width="90%">
<TBODY>
<TR>
<TH align=left class=title width="33%">文章阅读</TH>
<TH align=middle class=title width="33%">饮水思源</TH>
<TH align=right class=title width="34%">精华区</TH></TR></TBODY></TABLE>
<HR>
<TABLE class=doc>
<TBODY>
<TR>
<TD class=doc><PRE>发信人: fanfan (泛泛), 信区: MathTools
标 题: VC下调试mex文件 (zz)
发信站: 饮水思源 (2002年08月24日22:22:08 星期六), 站内信件
发信人: energy (长白山), 信区: MathTools
标 题: Re: 怎样调试用C++编写的Mex函数
发信站: BBS 水木清华站 (Wed Aug 21 13:33:37 2002), 转信
8.8.2在VC环境中调试mex程序
为了对mex程序进行更全面的跟踪调试,我们可以用VC的集成开发环境。由于mex程序是
一
个DLL,这就需要特别的调试办法。
为了便于调试,编制mex程序最好是按照上节的办法,在VC中以Debug方式建立。以8.6.4
节中的mex程序为例,要通过以下步骤才能进行调试。
首先,通过菜单Project|Settings,打开工程选项对话框,在Debug属性页中,找到编辑
框Executable for debug session,在这里输入MATLAB.EXE的完整路径名,如图8-11所
示
。
图8-11 为调试mex程序设置matlab.exe的路径
接着在mex程序的源程序中合适的位置设置断点。
最后,按F5键运行程序,就可以开始调试。此时会出现一个对话框:
图8-12 警告窗口
该对话框是说matlab.exe没有调试信息,不能进行调试。这是正常的,因为matlab.exe
是
release方式编译的,其中不可能包含调试信息,我们也不需要对其进行调试。事实上也
无法通过VC调试它。对此我们直接单击OK按钮将其忽略即可。
实际上,F5所启动的程序是matlab.exe,此时会启动一个新的MATLAB进程。MATLAB启动
后
发信人: energy (长白山), 信区: MathTools
标 题: Re: 怎样调试用C++编写的Mex函数
发信站: BBS 水木清华站 (Wed Aug 21 13:33:37 2002), 转信
8.8.2在VC环境中调试mex程序
为了对mex程序进行更全面的跟踪调试,我们可以用VC的集成开发环境。由于mex程序是
一
个DLL,这就需要特别的调试办法。
为了便于调试,编制mex程序最好是按照上节的办法,在VC中以Debug方式建立。以8.6.4
节中的mex程序为例,要通过以下步骤才能进行调试。
首先,通过菜单Project|Settings,打开工程选项对话框,在Debug属性页中,找到编辑
框Executable for debug session,在这里输入MATLAB.EXE的完整路径名,如图8-11所
示
。
图8-11 为调试mex程序设置matlab.exe的路径
接着在mex程序的源程序中合适的位置设置断点。
最后,按F5键运行程序,就可以开始调试。此时会出现一个对话框:
图8-12 警告窗口
该对话框是说matlab.exe没有调试信息,不能进行调试。这是正常的,因为matlab.exe
是
release方式编译的,其中不可能包含调试信息,我们也不需要对其进行调试。事实上也
无法通过VC调试它。对此我们直接单击OK按钮将其忽略即可。
实际上,F5所启动的程序是matlab.exe,此时会启动一个新的MATLAB进程。MATLAB启动
后
,默认的工作目录为该工程的位置,本例中为:
D:\book\soft\mextest
为了运行mextest,还需要进入Debug目录:
<FONT class=col36>>> cd debug
</FONT><FONT class=col36>>> mextest
</FONT>键入mextest命令后,程序就会停止在VC环境里的程序断点处。如图8-13所示。
图8-13 调试中的mex程序
此时可以在Context窗口中看到最近处理的变量数值,并可以随意添加Watch。接下来就
可
以象通常的C程序一样对该mex程序进行调试了。
在MATLAB窗口中键入exit命令,即可退出本次调试工作。或者,也可以通过VC的菜单命
令
,强行中止调试工作,也会关闭MATLAB,VC返回编辑状态。
<FONT class=col33>【 在 pedetration (天堂鸟) 的大作中提到: 】
</FONT><BR><FONT class=col36>: 我用C++编写的Mex函数,如何在VC的环境下编译和调试呢?总不至于每一次都只能在M
</FONT>a
<FONT class=col36>: tlab下面来进行调试吧,如果是这样的话,是不是有一点太麻烦了?
</FONT>
--
http://energy.my.topun.com
--
<B></B><FONT class=col32>讨论数学软件的使用、编程、下载、安装<B></FONT></B>
<B></B><FONT class=col32>迎光临8区<B></FONT></B><FONT class=col35><BLINK>mathtools<B></FONT></BLINK></B><FONT class=col32>板<B></FONT></B>
<B></B><FONT class=col32>Matlab Mathematic Maple...... <B></FONT></B>
<B></B><FONT class=col32>混合编程、神经网络、遗传算法......<B></FONT></B>
<B></B><FONT class=col32>...... <B></FONT></B>
<B><FONT class=col32>※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 211.80.37.180]</FONT></B>
</PRE></TR></TBODY></TABLE>
<HR>
<TABLE class=foot>
<TBODY>
<TR>
<TH class=foot><A href="http://bbs.sjtu.edu.cn/">返回首页</A></TH>
<TH class=foot><A
href="http://bbs.sjtu.edu.cn/cgi-bin/bbssec">分类讨论区</A></TH>
<TH class=foot><A
href="http://bbs.sjtu.edu.cn/cgi-bin/bbsall">全部讨论区</A></TH></TR></TBODY></TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -