主要内容

薄层色谱的报道

用TLC覆盖选项

中的例子用TLC调试器使用调试器来检测问题的一个部分TLC文件。因为一个测试模型可能无法涵盖所有可能的情况下,有一个技术,追溯了未经考验的情况下,TLC覆盖选项。

TLC覆盖选项提供了一种更简单的方法来确定不同的代码部分(而不是路径)在代码中执行。指定TLC追踪报道,在配置参数对话框中,选择开始TLC覆盖在生成代码

当你启动TLC报道,目标语言编译器生成一个. log文件为每个目标文件(* .tlc)使用。这些. log文件放在项目文件夹中创建的模型。每一个. log文件包含使用(计数)信息多少次遇到每一行执行期间。每一行开头遇到的次数,后跟一个冒号,紧随其后的是代码。

. log文件示例

这是一个日志文件,结果从模型生成代码的例子sfcndemo_sdotproduct位于文件夹matlabroot/工具/模型/ s金宝appimdemos / simfeatures(开放)。该模型内联sdotproduct在薄层色谱功能。薄层色谱文件实现功能位于文件夹matlabroot/工具/模型/ s金宝appimdemos / simfeatures / tlc_c(开放)。的. log文件sdotproduct.tlcsdotproduct.log,这是放置在您的构建文件夹。的内容sdotproduct.log类似于:

来源:E: \ matlab工具箱\ \仿真软件\ 金宝appsimdemos \ simfeatures \ tlc_c \ sdotproduct。tlc 0: % % 0: % %文件:sdotproduct。从sdotproduct tlc生成。ttlc修订1.6 0:% % 0:% %文摘:0:% %点积块目标文件。1:1:%实现sdotproduct“C”1: 0: % %功能:FcnThriftedComplexMultiply = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0: % %文摘:0:% %这个函数在复平面上增加两个数字。如果0:% %唯一真正的输入参数,那么复杂的部分是通过0:% % " "。0:% % 1:%函数FcnThriftedComplexConjMultiply(基于“增大化现实”技术,人工智能,br, bi、铬、ci,凤凰社)无效2:% openfile缓冲0:% % 0:% %计算cr = ar * br + ai * bi 0: % % 2: %分配rhsStr =“% < ar > * % < br >”2: %如果! LibIsEqual (ai, ") & & ! LibIsEqual (bi, " ") 0: %分配rhsStr = rhsStr + " + % < ai > * % < bi >”0: % endif 2: % < cr > % < op > % < rhsStr >;0:% % 0:% %计算Ci = Ar * Bi - Ai * Br 0: % % 2: %如果! LibIsEqual (Ci, " ") 0: %分配rhsStr = " 0.0 " 0: %如果! LibIsEqual (Bi, " ") 0: %分配rhsStr =“% < Ar > * % < Bi >”0: % endif 0: %如果! LibIsEqual (" ") Ai 0: %分配rhsStr = rhsStr +”——% < Ai > * % < Br > " 0: % endif 0: % < Ci > % < op > % < rhsStr >;0:% endif 0: % % 2: % closefile缓冲2:%返回缓冲区0:% endfunction % % FcnThriftedComplexMultiply 1: 1: 0: % %功能:输出= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0:% %文摘:0:% % Y =情况* U1,情况是复杂的共轭转置情况0:% % 1:%函数输出(块,系统)输出1:%分配sfcnName = ParamSettings。FunctionName 1: / * % <类型>块(% < sfcnName >): % < LibParentMaskBlockName(块)> * / 0:% % 1:%分配u0re = LibBlockInputSignal (0,“”,“”,“% < tRealPart > 0”) 1: %分配u0im = LibBlockInputSignal (0,“”,“”,“% < tImagPart > 0”) 1: %分配u1re = LibBlockInputSignal (1”“、”“% < tRealPart > 0) 1: %分配u1im = LibBlockInputSignal (1”“、”“% < tImagPart > 0) 0: % % 1: %分配yre = LibBlockOutputSignal (0,“”,“”,“% < tRealPart > 0”) 1: %分配yim = LibBlockOutputSignal (0,“”,“”,“% < tImagPart > 0”) 0: % % 0: % %需要声明一个临时变量u1re当输出是0:% %被覆盖和u0im 0 1: %分配outputOverWritesInput =…0:((LibBlockInputSignalBufferDstPort (0) = = 0) | |…0:(LibBlockInputSignalBufferDstPort (1) = = 0)) & &…… 0: (LibBlockInputSignalIsComplex(0) && LibBlockInputSignalIsComplex(1)) 0: %% 1: %if outputOverWritesInput 0: { 0: %assign dtName = LibBlockOutputSignalDataTypeName(0, tRealPart) 0: % tmpVar; 0: \ 0: %assign tmpVar = "tmpVar" 0: %else 1: %assign tmpVar = yre 0: %endif 0: %% 1: % = tmpVar; 0: %endif 0: %else 0: %% Continue with dot product for nonscalar case 1: %roll idx = rollRegion, lcv = RollThreshold, block, "Roller", rollVars 1: %assign u0re = LibBlockInputSignal(0,"",lcv,"%%") 1: %assign u0im = LibBlockInputSignal(0,"",lcv,"%%") 1: %assign u1re = LibBlockInputSignal(1,"",lcv,"%%") 1: %assign u1im = LibBlockInputSignal(1,"",lcv,"%%") 0: %% 1: %assign yre = LibBlockOutputSignal(0,"",lcv,"%%") 1: %assign yim = LibBlockOutputSignal(0,"",lcv,"%%") 0: %% 1: %
             

分析结果

这种结构便于识别分支机构不采取和开发新测试,可以锻炼目标文件中未使用的部分。

sdotproduct.log文件中,您可以看到代码没有被用来指定默认值的参数(例如,第一部分代码的函数FcnThriftedComplexConjMultiply)。使用这个日志作为参考和创建模型,运动未实行的线,你可以确保你的代码更健壮。

相关的话题