Coldfusion在加载时显示所有包含的文件

时间:2016-02-12 18:51:05

标签: coldfusion

我最近接手了一个完全彻底的灾难。非常糟糕的代码,每次我转身都坏了。我的问题是,使用ColdFusion,我如何显示/显示页面中包含的每个页面。本网站包含内包含的内容。命名约定很糟糕,每个代码都有数千行代码。页面网址中没有传递任何变量......我的意思是认真,我可以继续下去。我只需要知道特定页面加载时包含的所有页面,所以我知道在哪里寻找问题。

3 个答案:

答案 0 :(得分:8)

查看ColdFusion管理员中的Enable Request Debugging Output。此设置位于Debug Output Settings部分。然后打开Report Execution Times。这将输出用于构建页面的所有文件以及每个模板在页面底部所用的时间。

文档中的更多信息:

CF10 Debug Settings Documentation

CF9 Debug Settings Documentation

答案 1 :(得分:3)

I found a related comment on Ben Nadel's blog from Roger Tubby in 2011:

http://www.bennadel.com/blog/116-finding-template-execution-stack-in-coldfusion.htm#comments_36939

This method doesn't require enabling debugging or configuring any IP address. Calling the java.lang.Exception java class will return an object with a TagContext key that contains an array of structs (in reverse order) that will identify template files & lines of execution, but not execution times.

<cfscript>
JavaException = createObject("java","java.lang.Exception").init();
writedump(JavaException.TagContext);
</cfscript>

Here's a screenshot of a sample dump of the TagContext array. enter image description here

答案 2 :(得分:1)

要扩展其他人的答案,以下代码将转储包含的模板以及包含它们的人员。

为此,您需要在CFAdmin&gt;中检查启用请求调试输出。调试输出设置

<cfobject action="CREATE" type="JAVA" class="coldfusion.server.ServiceFactory" name="factory">
<cfset cfdebugger = factory.getDebuggingService()>
<cfset qEvents = cfdebugger.getDebugger().getData()>

<cfquery dbType="query" name="cfdebug_templates" debug="false">
    SELECT template, parent, Sum(endTime - StartTime) AS et
    FROM qEvents
    WHERE type = 'Template'
    GROUP BY template, parent
    ORDER BY et DESC
</cfquery>

<cfdump var="#cfdebug_templates#">