我目前正在编写自己的(回顾性)逐行调试器进行冷聚变,因为现有的逐行调试器不适用于我们的Eclipse版本的冷聚合版本。我(至少是标签格式)得到了相当多的工作。它的功能只是让一个java程序使用<CFDUMP var='LINENUMBER' output='D:/retrospectiveData.txt'>
指示每个(有效)行,然后同一个程序解释这个输出文件,以便在程序中逐行显示(即使它在事后)
虽然绝大多数代码的行为都是这样的,如果执行它们之前的标记,<cfelse>
和<cfelseif>
也不会这样做。这意味着我的调试器中的这些行可能会被错误地显示为正在运行。例如,考虑以下检测程序
<CFDUMP var='1' output='D:/retrospectiveData.txt'><cfif 1=1>
<CFDUMP var='2' output='D:/retrospectiveData.txt'> <!--- something --->
<CFDUMP var='3' output='D:/retrospectiveData.txt'><cfelseif 1=1>
<CFDUMP var='4' output='D:/retrospectiveData.txt'> <!--- something2 --->
<CFDUMP var='5' output='D:/retrospectiveData.txt'></cfif>
<cfelseif 1=1>
将被标记为执行,而实际上它从未被执行过。鉴于它评估为真,这将使<!--- something2 --->
从不运行
执行or标记时是否有任何方法可以输出文本文件(无论它的计算结果为true还是false)。我知道我不能简单地在<cfelseif 1=1>
内添加额外的标签。
答案 0 :(得分:1)
执行或标记时是否有任何方法可以输出文本文件
不是CFML,没有。
我认为你的方法存在根本缺陷 - 正如你所发现的那样 - 因为代码执行到达“物理”代码行,并不意味着代码行将被执行。如果你将调试输出放在行的末尾而不是开始(这样它将在“内部”逻辑块中,而不是在它们之前,你可能会有更多的运气。这可能会引发它自己的问题。
你能否在ColdFusion Builder中使用行调试器,而不是试图将你自己的行调试器一起使用?