如何在MATLAB函数块、状态流或C调用者块中使用的自定义C代码中调试和设置断点?

15次浏览(过去30天)
如何在MATLAB函数块、状态流或C调用者块中使用的自定义C代码中调试和设置断点?

接受的答案

MathWorks支援小组
MathWorks支援小组 2022年6月29日
编辑:MathWorks支援小组 2022年9月8日
对于MATLAB R2022a:
您可以在Simulink中调试和设置客户代码中的断点。
1.按照本文档为自定义代码生成调试符号
2.然后按照本文档启动外部调试器
对于MATLAB R2013b到R2021b:
1.将以下代码添加到您的模型中的MATLAB函数块:
coder.updateBuildInfo (“addCompileFlags”“/子”);
coder.updateBuildInfo (“addLinkFlags”/调试的);
2.将编译和链接标志更改为编译器和链接器的适当标志,以产生调试符号。上一步中列出的标志是针对Microsoft Visual Studio的。
3.在模型更新时,将在当前目录中创建自定义代码的动态库作为MEX:
在Mac和Linux上,调试符号存储在动态库本身中。
在Windows上,调试符号(一个PDB文件)将在以下目录中产生(其中是模型的名称):
< currentFolder > \ slprj \_sfprj \ <模型> \_自我\ sfun \ src \
4.使用调试器附加到MATLAB进程。在调试器中输入符号文件的文件路径,以便它可以找到符号文件。
注意:如果调试器中没有加载符号文件,输入:
>>清除mex
在MATLAB命令窗口中,再次更新模型。这将重新加载MEX动态链接库。
5.在调试器中的自定义代码中设置断点,并检查该文件的符号是否已加载。
6.模拟并命中断点。
对于MATLAB R2013a及更早版本:
虽然类似于上面的说明,编码器。updateBuildInfo是在R2013b中添加的,所以编译和链接标志必须手动添加。
1.更新模型。
2.导航到:
< currentFolder > \ slprj \_sfprj \ <模型> \_自我\ sfun \ src \
3.删除此文件夹中的所有对象文件(以.o或.obj结尾),稍后将强制编译器重新创建这些文件。
4.使用文本编辑器打开makefile(在Windows上, _sfun_mak),并找到定义编译器标志(CFLAGS)和链接器标志(LDFLAGS)的行
5.向CFLAGS声明中添加适当的编译器标志以产生调试符号
6.为LDFLAGS声明添加适当的链接器标志以产生调试符号
7.在MATLAB中输入
>>清除mex
以便卸载已经加载的MEX文件。
8.运行构建脚本(在Windows上,_sfun.bat)使用!将生成目标文件和MEX文件:
>>! <模型> _sfun.bat
9.导航回(在slprj之外)。如果MEX文件在前面的内部文件夹中,请将其复制到这里。
10.使用调试器附加到MATLAB进程。在调试器中输入符号文件的文件路径,以便它可以找到符号文件。
11.在调试器中的自定义代码中设置断点,并检查该文件的符号是否已加载。
12.模拟并命中断点。

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map