<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
<title>Diagnostics Task</title>
</head>

<body>

<h2><a name="diagnostics">Diagnostics</a></h2>
<h3>Diagnostics</h3>
<p>
Runs Apache Ant's <code>-diagnostics</code> code inside Ant itself. This is good for 
debugging Ant's configuration under an IDE. 
<b>Since Ant 1.7.0</b>
</p>


<h3>Examples</h3>

<pre>
    &lt;target name="diagnostics" description="diagnostics"&gt;
        &lt;diagnostics/&gt;
    &lt;/target&gt;
</pre>
<p>
    Prints out the current diagnostics dump.
</p>


</body>
</html>
