From 785214c479c1e43590948651017bed0d80281d2a Mon Sep 17 00:00:00 2001 From: Andrii Kurdiumov Date: Wed, 18 Mar 2020 14:51:41 +0600 Subject: [PATCH 1/4] Improve documentation around Dependency analysis - Clarify not supported usage for ILCompiler-DependencyGraph-Viewer - Mention about existence of WhyDGML tool Closes: #8044, #8043 --- .../how-to-debug-compiler-dependency-analysis.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/how-to-debug-compiler-dependency-analysis.md b/Documentation/how-to-debug-compiler-dependency-analysis.md index 99fb959bd45..4587db0f44c 100644 --- a/Documentation/how-to-debug-compiler-dependency-analysis.md +++ b/Documentation/how-to-debug-compiler-dependency-analysis.md @@ -7,6 +7,7 @@ Analysis techniques for the dependency graph. 1. Use the ILCompiler-DependencyGraph-Viewer tool (if running on Windows). This tool is located in src\ILCompiler.DependencyAnalysisFramework\ILCompiler-DependencyGraph-Viewer - This is the only convenient way to examine the graph while also simultaneously debugging the compiler. - While this is currently Windows only due to use of WinForms, it would be fairly straightforward to make a command line based tool. + - Dependency graph do not support multiple simultaneous logging facilities, so make sure that you do not set IlcGenerateDgmlFile or invoke ILCompiler ith DGML generation on. 2. Pass command line switches to the compiler to generate a dependency graph dgml file. This will produce the same data as is viewable in the viewer tool, but in a textual xml format. - Future efforts may make the xml file loadable by the viewer tool. 3. Instrument the compiler dependency analysis. (This may be necessary in cases where the viewer is unable to provide sufficient information about why the graph is structured as it is.) @@ -35,3 +36,12 @@ Usage instructions: Once the interesting node(s) have been identified in the dependency graph window, select one of them, and then press Explore. - In the Node Explorer window, the Dependent nodes (the ones which dependend on the current node are the nodes displayed above, and the Dependee nodes (the nodes that this node depends on) are displayed below. Each node in the list is paired with a textual reason as to why that edge in the graph exists. - Select a node to explore further and press the corresponding button to make it happen. + +WhyDGML +======= +This tool allow analysis of nodes. +The input to the tool is the DGML file and name of a node of interest. The output is the list of reasons why that node was include. + +This tool located in folder `src\ILCompiler.DependencyAnalysisFramework\WhyDgml` + +See https://github.com/dotnet/corert/pull/7962 for example of usage and output. From 1dbfcec0a9faf00308a6658c5ef7d676b92443a9 Mon Sep 17 00:00:00 2001 From: Andrey Kurdyumov Date: Wed, 18 Mar 2020 18:10:08 +0600 Subject: [PATCH 2/4] Update Documentation/how-to-debug-compiler-dependency-analysis.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Michal Strehovský --- Documentation/how-to-debug-compiler-dependency-analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/how-to-debug-compiler-dependency-analysis.md b/Documentation/how-to-debug-compiler-dependency-analysis.md index 4587db0f44c..ab64ca1f888 100644 --- a/Documentation/how-to-debug-compiler-dependency-analysis.md +++ b/Documentation/how-to-debug-compiler-dependency-analysis.md @@ -39,7 +39,7 @@ Once the interesting node(s) have been identified in the dependency graph window WhyDGML ======= -This tool allow analysis of nodes. +This tool visualizes paths from a node of interest to the roots. The input to the tool is the DGML file and name of a node of interest. The output is the list of reasons why that node was include. This tool located in folder `src\ILCompiler.DependencyAnalysisFramework\WhyDgml` From daab7122fce2b28e71457e9c2a632ea631b96316 Mon Sep 17 00:00:00 2001 From: Andrey Kurdyumov Date: Wed, 18 Mar 2020 18:10:22 +0600 Subject: [PATCH 3/4] Update Documentation/how-to-debug-compiler-dependency-analysis.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Michal Strehovský --- Documentation/how-to-debug-compiler-dependency-analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/how-to-debug-compiler-dependency-analysis.md b/Documentation/how-to-debug-compiler-dependency-analysis.md index ab64ca1f888..c6a4ad7a950 100644 --- a/Documentation/how-to-debug-compiler-dependency-analysis.md +++ b/Documentation/how-to-debug-compiler-dependency-analysis.md @@ -7,7 +7,7 @@ Analysis techniques for the dependency graph. 1. Use the ILCompiler-DependencyGraph-Viewer tool (if running on Windows). This tool is located in src\ILCompiler.DependencyAnalysisFramework\ILCompiler-DependencyGraph-Viewer - This is the only convenient way to examine the graph while also simultaneously debugging the compiler. - While this is currently Windows only due to use of WinForms, it would be fairly straightforward to make a command line based tool. - - Dependency graph do not support multiple simultaneous logging facilities, so make sure that you do not set IlcGenerateDgmlFile or invoke ILCompiler ith DGML generation on. + - Dependency graph does not support multiple simultaneous logging facilities, so make sure that you do not set IlcGenerateDgmlFile or invoke ILCompiler with the DGML generation turned on. 2. Pass command line switches to the compiler to generate a dependency graph dgml file. This will produce the same data as is viewable in the viewer tool, but in a textual xml format. - Future efforts may make the xml file loadable by the viewer tool. 3. Instrument the compiler dependency analysis. (This may be necessary in cases where the viewer is unable to provide sufficient information about why the graph is structured as it is.) From 732a9457b9032d7ae7836553f16204025ec8e66e Mon Sep 17 00:00:00 2001 From: Andrey Kurdyumov Date: Wed, 18 Mar 2020 18:10:32 +0600 Subject: [PATCH 4/4] Update Documentation/how-to-debug-compiler-dependency-analysis.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Michal Strehovský --- Documentation/how-to-debug-compiler-dependency-analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/how-to-debug-compiler-dependency-analysis.md b/Documentation/how-to-debug-compiler-dependency-analysis.md index c6a4ad7a950..860cb1f9ce8 100644 --- a/Documentation/how-to-debug-compiler-dependency-analysis.md +++ b/Documentation/how-to-debug-compiler-dependency-analysis.md @@ -40,7 +40,7 @@ Once the interesting node(s) have been identified in the dependency graph window WhyDGML ======= This tool visualizes paths from a node of interest to the roots. -The input to the tool is the DGML file and name of a node of interest. The output is the list of reasons why that node was include. +The input to the tool is the DGML file and name of a node of interest. The output is the list of reasons why that node was included. This tool located in folder `src\ILCompiler.DependencyAnalysisFramework\WhyDgml`