CilTools.Runtime
mechanisms to avoid \nexpensive AssemblyReader.Read
calls. The preloaded assembly must implement \nnull
if the target item is unknown\n"
+ content.vb: Public ReadOnly Property TargetItem As Object
+ overload: CilTools.Syntax.IdentifierSyntax.TargetItem*
+ modifiers.csharp:
+ - public
+ - get
+ modifiers.vb:
+ - Public
+ - ReadOnly
+- uid: CilTools.Syntax.IdentifierSyntax.TargetMember
+ commentId: P:CilTools.Syntax.IdentifierSyntax.TargetMember
+ id: TargetMember
+ parent: CilTools.Syntax.IdentifierSyntax
+ langs:
+ - csharp
+ - vb
+ name: TargetMember
+ nameWithType: IdentifierSyntax.TargetMember
+ fullName: CilTools.Syntax.IdentifierSyntax.TargetMember
+ type: Property
+ source:
+ path: CilTools.BytecodeAnalysis
+ isExternal: true
+ assemblies:
+ - CilTools.BytecodeAnalysis
+ namespace: CilTools.Syntax
+ summary: "\nGets the assembly member represented by this identifier\n"
+ syntax:
+ content: public MemberInfo TargetMember { get; }
+ parameters: []
+ return:
+ type: System.Reflection.MemberInfo
+ description: "\nThe reference to the target member, or null
if the target item is unknown or not a member\n"
+ content.vb: Public ReadOnly Property TargetMember As MemberInfo
+ overload: CilTools.Syntax.IdentifierSyntax.TargetMember*
+ modifiers.csharp:
+ - public
+ - get
+ modifiers.vb:
+ - Public
+ - ReadOnly
references:
- uid: CilTools.Syntax
commentId: N:CilTools.Syntax
@@ -258,6 +325,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
@@ -745,3 +853,28 @@ references:
name: Boolean
nameWithType: Boolean
fullName: System.Boolean
+- uid: CilTools.Syntax.IdentifierSyntax.TargetItem*
+ commentId: Overload:CilTools.Syntax.IdentifierSyntax.TargetItem
+ isExternal: true
+ name: TargetItem
+ nameWithType: IdentifierSyntax.TargetItem
+ fullName: CilTools.Syntax.IdentifierSyntax.TargetItem
+- uid: CilTools.Syntax.IdentifierSyntax.TargetMember*
+ commentId: Overload:CilTools.Syntax.IdentifierSyntax.TargetMember
+ isExternal: true
+ name: TargetMember
+ nameWithType: IdentifierSyntax.TargetMember
+ fullName: CilTools.Syntax.IdentifierSyntax.TargetMember
+- uid: System.Reflection.MemberInfo
+ commentId: T:System.Reflection.MemberInfo
+ parent: System.Reflection
+ isExternal: true
+ name: MemberInfo
+ nameWithType: MemberInfo
+ fullName: System.Reflection.MemberInfo
+- uid: System.Reflection
+ commentId: N:System.Reflection
+ isExternal: true
+ name: System.Reflection
+ nameWithType: System.Reflection
+ fullName: System.Reflection
diff --git a/docfx_project/api/CilTools.Syntax.InstructionSyntax.yml b/docfx_project/api/CilTools.Syntax.InstructionSyntax.yml
index 620d676..3d1572e 100644
--- a/docfx_project/api/CilTools.Syntax.InstructionSyntax.yml
+++ b/docfx_project/api/CilTools.Syntax.InstructionSyntax.yml
@@ -41,6 +41,7 @@ items:
inheritedMembers:
- CilTools.Syntax.SyntaxNode.ToString
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.TrailingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
@@ -445,6 +446,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
diff --git a/docfx_project/api/CilTools.Syntax.KeywordSyntax.yml b/docfx_project/api/CilTools.Syntax.KeywordSyntax.yml
index 8bb6afc..97c963c 100644
--- a/docfx_project/api/CilTools.Syntax.KeywordSyntax.yml
+++ b/docfx_project/api/CilTools.Syntax.KeywordSyntax.yml
@@ -35,6 +35,7 @@ items:
inheritedMembers:
- CilTools.Syntax.SyntaxNode.ToString
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.TrailingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
@@ -259,6 +260,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
diff --git a/docfx_project/api/CilTools.Syntax.LiteralSyntax.yml b/docfx_project/api/CilTools.Syntax.LiteralSyntax.yml
index 26cbb01..869e9c1 100644
--- a/docfx_project/api/CilTools.Syntax.LiteralSyntax.yml
+++ b/docfx_project/api/CilTools.Syntax.LiteralSyntax.yml
@@ -34,6 +34,7 @@ items:
inheritedMembers:
- CilTools.Syntax.SyntaxNode.ToString
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.TrailingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
@@ -227,6 +228,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
diff --git a/docfx_project/api/CilTools.Syntax.MemberRefSyntax.yml b/docfx_project/api/CilTools.Syntax.MemberRefSyntax.yml
index c0fbcbf..2f406f7 100644
--- a/docfx_project/api/CilTools.Syntax.MemberRefSyntax.yml
+++ b/docfx_project/api/CilTools.Syntax.MemberRefSyntax.yml
@@ -34,6 +34,7 @@ items:
inheritedMembers:
- CilTools.Syntax.SyntaxNode.ToString
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.TrailingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
@@ -227,6 +228,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
diff --git a/docfx_project/api/CilTools.Syntax.MethodDefSyntax.yml b/docfx_project/api/CilTools.Syntax.MethodDefSyntax.yml
index b565279..20c4476 100644
--- a/docfx_project/api/CilTools.Syntax.MethodDefSyntax.yml
+++ b/docfx_project/api/CilTools.Syntax.MethodDefSyntax.yml
@@ -35,6 +35,7 @@ items:
inheritedMembers:
- CilTools.Syntax.SyntaxNode.ToString
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.TrailingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
@@ -259,6 +260,47 @@ references:
- name: )
nameWithType: )
fullName: )
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ isExternal: true
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ spec.csharp:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
+ spec.vb:
+ - uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ name: GetTypeDefSyntax
+ nameWithType: SyntaxNode.GetTypeDefSyntax
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax
+ isExternal: true
+ - name: (
+ nameWithType: (
+ fullName: (
+ - uid: System.Type
+ name: Type
+ nameWithType: Type
+ fullName: System.Type
+ isExternal: true
+ - name: )
+ nameWithType: )
+ fullName: )
- uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace
commentId: P:CilTools.Syntax.SyntaxNode.LeadingWhitespace
parent: CilTools.Syntax.SyntaxNode
diff --git a/docfx_project/api/CilTools.Syntax.SyntaxNode.yml b/docfx_project/api/CilTools.Syntax.SyntaxNode.yml
index 8815800..f2d4fde 100644
--- a/docfx_project/api/CilTools.Syntax.SyntaxNode.yml
+++ b/docfx_project/api/CilTools.Syntax.SyntaxNode.yml
@@ -8,6 +8,7 @@ items:
- CilTools.Syntax.SyntaxNode.#ctor
- CilTools.Syntax.SyntaxNode.EnumerateChildNodes
- CilTools.Syntax.SyntaxNode.GetChildNodes
+ - CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
- CilTools.Syntax.SyntaxNode.LeadingWhitespace
- CilTools.Syntax.SyntaxNode.Parent
- CilTools.Syntax.SyntaxNode.ToString
@@ -181,6 +182,41 @@ items:
- public
modifiers.vb:
- Public
+- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ id: GetTypeDefSyntax(System.Type)
+ parent: CilTools.Syntax.SyntaxNode
+ langs:
+ - csharp
+ - vb
+ name: GetTypeDefSyntax(Type)
+ nameWithType: SyntaxNode.GetTypeDefSyntax(Type)
+ fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type)
+ type: Method
+ source:
+ path: CilTools.BytecodeAnalysis
+ isExternal: true
+ assemblies:
+ - CilTools.BytecodeAnalysis
+ namespace: CilTools.Syntax
+ summary: "\nGets the CIL assembler syntax for the definition of the specified type \n"
+ syntax:
+ content: public static IEnumerableGets the collection of nodes that make up the handler of the specified exception block
+public IEnumerable<CilGraphNode> GetHandlerNodes(ExceptionBlock block)
+ Type | +Name | +Description | +
---|---|---|
ExceptionBlock | +block | +The exception block to get handler + |
+
Type | +Description | +
---|---|
System.Collections.Generic.IEnumerable<CilGraphNode> | +The collection of nodes corresponding to exception block + |
+
The exception block must belong to the method from which this graph was created. If the +block belongs to another method, the behaviour is undefined. You can get exception blocks +that enclose the given graph node using GetExceptionBlocks() +method.
+Enumerates all instructions represented by this graph's nodes
diff --git a/docs/api/CilTools.BytecodeAnalysis.CilGraphNode.html b/docs/api/CilTools.BytecodeAnalysis.CilGraphNode.html index 80d7fa0..67b487d 100644 --- a/docs/api/CilTools.BytecodeAnalysis.CilGraphNode.html +++ b/docs/api/CilTools.BytecodeAnalysis.CilGraphNode.html @@ -273,6 +273,33 @@Gets an array of exception handling blocks in which this node is enclosed
+public ExceptionBlock[] GetExceptionBlocks()
+ Type | +Description | +
---|---|
ExceptionBlock[] | +An array of exception blocks, or an empty array if there are none + |
+
Gets an array of nodes that represents the jump table of the switch instruction, if applicable
diff --git a/docs/api/CilTools.BytecodeAnalysis.CilGraphNodeMutable.html b/docs/api/CilTools.BytecodeAnalysis.CilGraphNodeMutable.html index fcbb7e1..39e101c 100644 --- a/docs/api/CilTools.BytecodeAnalysis.CilGraphNodeMutable.html +++ b/docs/api/CilTools.BytecodeAnalysis.CilGraphNodeMutable.html @@ -87,6 +87,9 @@public override bool IsAssignableFrom(Type c)
+ Type | +Name | +Description | +
---|---|---|
System.Type | +c | ++ |
Type | +Description | +
---|---|
System.Boolean | ++ |
protected override bool IsValueTypeImpl()
+ Type | +Description | +
---|---|
System.Boolean | ++ |
Adds the specified assembly into the preloaded assembly collection
+public void AddPreloadedAssembly(Assembly ass)
+ Type | +Name | +Description | +
---|---|---|
System.Reflection.Assembly | +ass | +Preloaded assembly instance + |
+
Adding preloaded assemblies enables some CilTools.Runtime
mechanisms to avoid
+expensive AssemblyReader.Read
calls. The preloaded assembly must implement
+ITokenResolver interface to be useful.
Type | +Condition | +
---|---|
System.ArgumentNullException | +Assembly is null + |
+
Removes all assemblies from the preloaded assembly collection
+public void ClearPreloadedAssemblies()
+ Gets the collection of all methods in the specified process
@@ -270,7 +331,8 @@Gets the pseudo-assembly that represents the collection of dynamic methods in the process containing CLR instance
+Gets the pseudo-assembly that represents the collection of dynamic methods in the process +containing the CLR instance
Gets the item (such as assembly, member or variable) that this identifier represents
+public object TargetItem { get; }
+ Type | +Description | +
---|---|
System.Object | +The reference to the target item, or |
+
Gets the assembly member represented by this identifier
+public MemberInfo TargetMember { get; }
+ Type | +Description | +
---|---|
System.Reflection.MemberInfo | +The reference to the target member, or |
+
Gets the CIL assembler syntax for the definition of the specified type
+public static IEnumerable<SyntaxNode> GetTypeDefSyntax(Type t)
+ Type | +Name | +Description | +
---|---|---|
System.Type | +t | +Type to get definition syntax + |
+
Type | +Description | +
---|---|
System.Collections.Generic.IEnumerable<SyntaxNode> | +The collection of syntax nodes that make up type definition syntax + |
+
Gets the text representation of this node, including whitespace content
diff --git a/docs/articles/cilview-manual.html b/docs/articles/cilview-manual.html index 0f1f5e1..c6d1e39 100644 --- a/docs/articles/cilview-manual.html +++ b/docs/articles/cilview-manual.html @@ -94,9 +94,6 @@2. Select the process from the list in the appearing Attach to process dialog.
You can search process by entering the process name starting fragment or ID into the text field and pressing Search.
--NOTE: Only 32-bit processes are supported. .NET Core shared host is 64-bit on 64-bit Windows, but you can attach to .NET Core application if it was build targeting the win-x86 runtime ID and started from the resulting EXE file rather than using shared host.
-
3. Check the active mode checkbox if you want to get more accurate info.
NOTE: When attaching in active mode, the target process is suspended. Do not use active mode on the application that is currently performing critical business tasks.
@@ -107,15 +104,16 @@Displaying code from the process
7. Select method in the left panel.
You can also search assemblies, types and methods by entering the fragment of their names into the Find text field and pressing the ">" button. CIL View searches methods in the currently selected type, if the type is selected. In a similar way, types are searched in the currently selected assembly, if one is selected. The search results are shown in the context menu. Clicking on the menu item navigates to the corresponding object.
8. The right panel will display the CIL disassembly of the selected method.
-You can also view the code of dynamic methods generated at runtime in the target process by selecting the
+<...DynamicMethods>
entry in the assembly drop-down list (it is displayed at the end of the list).You can also view the code of dynamic methods generated at runtime in the target process by selecting the
<...DynamicMethods>
entry in the assembly drop-down list (it is displayed at the end of the list). Starting from version 2.2, methods from dynamic assemblies are not included under dynamic methods and instead can be opened under the corresponding dynamic assembly.Limitations when displaying code from the process
-If the assembly could not be loaded by the CIL View application (this is usually happens with some mixed-mode assemblies which have some PE structures stripped off, so they could be loaded by CLR, but not by System.Reflection.Metadata), the following limitations apply:
+If the assembly is a dynamic assembly or an assembly that could not be loaded by CIL View as file (this is usually happens with some mixed-mode assemblies which have some PE structures stripped off, so they could be loaded by CLR, but not by System.Reflection.Metadata), the following limitations apply:
- Method return value or parameter types are not shown
- String literal tokens are not resolved
- Standalone signature tokens are not resolved
- Tokens of external assembly members are not resolved
-- Local variables and exception handling blocks are not shown
+- Local variables are not shown
+- Exception handling blocks are not shown (except for methods from dynamic assemblies)
For dynamic methods, the following limitations apply:
@@ -123,10 +121,23 @@
+Limitations when disp
- All tokens, except for method tokens, are not resolved
- Local variables are not shown
When opening the 64-bit process, the following limitations apply:
++
+- Dynamic assemblies and dynamic methods are not shown
+- Assemblies that could not be loaded by CIL View as files (see above) are not shown
+- Process and threads information is not available
++NOTE: .NET Core shared host is 64-bit on 64-bit Windows, but if you want to overcome these limitations, you can build it targeting the win-x86 runtime ID and start it from the resulting EXE file rather than using shared host.
+Examining managed threads
To examine managed threads when process is opened, click Process -> Threads menu. The Threads window displays a drop-down list of managed threads. Each list item contains native thread ID, thread type for special threads (GC, Finalizer, Thread pool), COM apartment type (STA or MTA), and the topmost stack frame info. Select thread from the list to view the full stack trace.
The stack trace will be displayed in the left panel. Some stack frames are hyperlinks, and clicking on them will open the corresponding method in the right panel. The instructions belonging to the approximate currently executed code fragment are highlighted in red. This feature only works reliably when attaching in active mode.
+Exception analysis
+To figure out exceptions that the method could potentially throw, open that method and use Analysis -> Show exception (methods) menu command. In the opened window you'll see the list of exception types as well as the call stack that could trigger them. The CIL View recursively scans the analysed method and all methods called by it, and searches for exceptions that are thrown and not handled up the stack. Not that exception analysis might be inaccurate (bot false positives and false negatives, so it's only good for a quick estimate of thrown exceptions. To perform exception analysis on all methods of the current type, use Analysis -> Show exception (type).
+To compare exceptions actually thrown by methods of the type and exceptions mentioned in their documentation, select the type and use Analysis -> Compare exceptions command. In the appearing dialog box, select the XML documentation file to compare. CIL View supports both regular ECMA XML emitted by C# compiler and monodoc XML format. The opened window will show the differences between exceptions reported by analysis and exceptions documented in ECMA XML
+<exception>
tags.The exception analysis supported when opening both files and processes. However, when you hit any limitations mentioned above, the analysis accuracy decreases.
ClickOnce installation with auto-update
You can install CIL View via ClickOnce if you want to download updates automatically. The ClickOnce download URL: https://msdn-whiteknight.github.io/CilTools/update/
Using auto-update requires stable internet connection and access to the https://msdn-whiteknight.github.io/ website. If you are using old Windows or .NET Framework versions, you might be unable to connect due to TLS protocol version or ciphersuite mismatch.
@@ -157,6 +168,24 @@Changelog
Fix BadImageFormatException on C++/CLI assemblies Fix signatures with function pointers being incorrectly displayed in left panel +2.2
++
- Add support for
+constrained.
instruction prefix- Add type definition disassembler
+- Add Open BCL assembly dialog
+- Add navigation history
+- Add partial support for 64-bit processes
+- Add support for dynamic assemblies
+- Add exception analysis
+- Disable wrapping in search textbox
+- Method navigation hyperlink now spans only over the method name identifier, instead of the whole method reference syntax
+- Method navigation hyperlink is no longer underlined (to fix cases where it was obscuring _ chars in name)
+- Improve performance of "Open process" by preloading assemblies from files instead of reading target process memory, where it's possible
+- Fix null reference on typedref parameter
+- Fix unhandled exception when opening file on background thread
+- Fix token resolution bug after navigating to generic method instantiation
+- Fix crashes on access to disposed assemblies
+
Copyright (c) 2021, MSDN.WhiteKnight
This CIL View distribution contains the binary code of ClrMD library: Copyright (c) .NET Foundation and Contributors, MIT License.
diff --git a/docs/xrefmap.yml b/docs/xrefmap.yml index bac5a52..d3bf57c 100644 --- a/docs/xrefmap.yml +++ b/docs/xrefmap.yml @@ -274,6 +274,18 @@ references: commentId: Overload:CilTools.BytecodeAnalysis.CilGraph.EmitTo fullName: CilTools.BytecodeAnalysis.CilGraph.EmitTo nameWithType: CilGraph.EmitTo +- uid: CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes(CilTools.Reflection.ExceptionBlock) + name: GetHandlerNodes(ExceptionBlock) + href: api/CilTools.BytecodeAnalysis.CilGraph.html#CilTools_BytecodeAnalysis_CilGraph_GetHandlerNodes_CilTools_Reflection_ExceptionBlock_ + commentId: M:CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes(CilTools.Reflection.ExceptionBlock) + fullName: CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes(CilTools.Reflection.ExceptionBlock) + nameWithType: CilGraph.GetHandlerNodes(ExceptionBlock) +- uid: CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes* + name: GetHandlerNodes + href: api/CilTools.BytecodeAnalysis.CilGraph.html#CilTools_BytecodeAnalysis_CilGraph_GetHandlerNodes_ + commentId: Overload:CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes + fullName: CilTools.BytecodeAnalysis.CilGraph.GetHandlerNodes + nameWithType: CilGraph.GetHandlerNodes - uid: CilTools.BytecodeAnalysis.CilGraph.GetInstructions name: GetInstructions() href: api/CilTools.BytecodeAnalysis.CilGraph.html#CilTools_BytecodeAnalysis_CilGraph_GetInstructions @@ -448,6 +460,18 @@ references: commentId: Overload:CilTools.BytecodeAnalysis.CilGraphNode.BranchTarget fullName: CilTools.BytecodeAnalysis.CilGraphNode.BranchTarget nameWithType: CilGraphNode.BranchTarget +- uid: CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks + name: GetExceptionBlocks() + href: api/CilTools.BytecodeAnalysis.CilGraphNode.html#CilTools_BytecodeAnalysis_CilGraphNode_GetExceptionBlocks + commentId: M:CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks + fullName: CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks() + nameWithType: CilGraphNode.GetExceptionBlocks() +- uid: CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks* + name: GetExceptionBlocks + href: api/CilTools.BytecodeAnalysis.CilGraphNode.html#CilTools_BytecodeAnalysis_CilGraphNode_GetExceptionBlocks_ + commentId: Overload:CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks + fullName: CilTools.BytecodeAnalysis.CilGraphNode.GetExceptionBlocks + nameWithType: CilGraphNode.GetExceptionBlocks - uid: CilTools.BytecodeAnalysis.CilGraphNode.GetSwitchTargets name: GetSwitchTargets() href: api/CilTools.BytecodeAnalysis.CilGraphNode.html#CilTools_BytecodeAnalysis_CilGraphNode_GetSwitchTargets @@ -2251,6 +2275,18 @@ references: commentId: Overload:CilTools.BytecodeAnalysis.TypeSpec.IsArrayImpl fullName: CilTools.BytecodeAnalysis.TypeSpec.IsArrayImpl nameWithType: TypeSpec.IsArrayImpl +- uid: CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom(System.Type) + name: IsAssignableFrom(Type) + href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_IsAssignableFrom_System_Type_ + commentId: M:CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom(System.Type) + fullName: CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom(System.Type) + nameWithType: TypeSpec.IsAssignableFrom(Type) +- uid: CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom* + name: IsAssignableFrom + href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_IsAssignableFrom_ + commentId: Overload:CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom + fullName: CilTools.BytecodeAnalysis.TypeSpec.IsAssignableFrom + nameWithType: TypeSpec.IsAssignableFrom - uid: CilTools.BytecodeAnalysis.TypeSpec.IsByRefImpl name: IsByRefImpl() href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_IsByRefImpl @@ -2371,6 +2407,18 @@ references: commentId: Overload:CilTools.BytecodeAnalysis.TypeSpec.IsPrimitiveImpl fullName: CilTools.BytecodeAnalysis.TypeSpec.IsPrimitiveImpl nameWithType: TypeSpec.IsPrimitiveImpl +- uid: CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl + name: IsValueTypeImpl() + href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_IsValueTypeImpl + commentId: M:CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl + fullName: CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl() + nameWithType: TypeSpec.IsValueTypeImpl() +- uid: CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl* + name: IsValueTypeImpl + href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_IsValueTypeImpl_ + commentId: Overload:CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl + fullName: CilTools.BytecodeAnalysis.TypeSpec.IsValueTypeImpl + nameWithType: TypeSpec.IsValueTypeImpl - uid: CilTools.BytecodeAnalysis.TypeSpec.MakeArrayType name: MakeArrayType() href: api/CilTools.BytecodeAnalysis.TypeSpec.html#CilTools_BytecodeAnalysis_TypeSpec_MakeArrayType @@ -4792,6 +4840,30 @@ references: commentId: Overload:CilTools.Runtime.ClrAssemblyReader.#ctor fullName: CilTools.Runtime.ClrAssemblyReader.ClrAssemblyReader nameWithType: ClrAssemblyReader.ClrAssemblyReader +- uid: CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly(System.Reflection.Assembly) + name: AddPreloadedAssembly(Assembly) + href: api/CilTools.Runtime.ClrAssemblyReader.html#CilTools_Runtime_ClrAssemblyReader_AddPreloadedAssembly_System_Reflection_Assembly_ + commentId: M:CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly(System.Reflection.Assembly) + fullName: CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly(System.Reflection.Assembly) + nameWithType: ClrAssemblyReader.AddPreloadedAssembly(Assembly) +- uid: CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly* + name: AddPreloadedAssembly + href: api/CilTools.Runtime.ClrAssemblyReader.html#CilTools_Runtime_ClrAssemblyReader_AddPreloadedAssembly_ + commentId: Overload:CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly + fullName: CilTools.Runtime.ClrAssemblyReader.AddPreloadedAssembly + nameWithType: ClrAssemblyReader.AddPreloadedAssembly +- uid: CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies + name: ClearPreloadedAssemblies() + href: api/CilTools.Runtime.ClrAssemblyReader.html#CilTools_Runtime_ClrAssemblyReader_ClearPreloadedAssemblies + commentId: M:CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies + fullName: CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies() + nameWithType: ClrAssemblyReader.ClearPreloadedAssemblies() +- uid: CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies* + name: ClearPreloadedAssemblies + href: api/CilTools.Runtime.ClrAssemblyReader.html#CilTools_Runtime_ClrAssemblyReader_ClearPreloadedAssemblies_ + commentId: Overload:CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies + fullName: CilTools.Runtime.ClrAssemblyReader.ClearPreloadedAssemblies + nameWithType: ClrAssemblyReader.ClearPreloadedAssemblies - uid: CilTools.Runtime.ClrAssemblyReader.EnumerateMethods(System.Diagnostics.Process) name: EnumerateMethods(Process) href: api/CilTools.Runtime.ClrAssemblyReader.html#CilTools_Runtime_ClrAssemblyReader_EnumerateMethods_System_Diagnostics_Process_ @@ -5698,6 +5770,30 @@ references: commentId: Overload:CilTools.Syntax.IdentifierSyntax.IsMemberName fullName: CilTools.Syntax.IdentifierSyntax.IsMemberName nameWithType: IdentifierSyntax.IsMemberName +- uid: CilTools.Syntax.IdentifierSyntax.TargetItem + name: TargetItem + href: api/CilTools.Syntax.IdentifierSyntax.html#CilTools_Syntax_IdentifierSyntax_TargetItem + commentId: P:CilTools.Syntax.IdentifierSyntax.TargetItem + fullName: CilTools.Syntax.IdentifierSyntax.TargetItem + nameWithType: IdentifierSyntax.TargetItem +- uid: CilTools.Syntax.IdentifierSyntax.TargetItem* + name: TargetItem + href: api/CilTools.Syntax.IdentifierSyntax.html#CilTools_Syntax_IdentifierSyntax_TargetItem_ + commentId: Overload:CilTools.Syntax.IdentifierSyntax.TargetItem + fullName: CilTools.Syntax.IdentifierSyntax.TargetItem + nameWithType: IdentifierSyntax.TargetItem +- uid: CilTools.Syntax.IdentifierSyntax.TargetMember + name: TargetMember + href: api/CilTools.Syntax.IdentifierSyntax.html#CilTools_Syntax_IdentifierSyntax_TargetMember + commentId: P:CilTools.Syntax.IdentifierSyntax.TargetMember + fullName: CilTools.Syntax.IdentifierSyntax.TargetMember + nameWithType: IdentifierSyntax.TargetMember +- uid: CilTools.Syntax.IdentifierSyntax.TargetMember* + name: TargetMember + href: api/CilTools.Syntax.IdentifierSyntax.html#CilTools_Syntax_IdentifierSyntax_TargetMember_ + commentId: Overload:CilTools.Syntax.IdentifierSyntax.TargetMember + fullName: CilTools.Syntax.IdentifierSyntax.TargetMember + nameWithType: IdentifierSyntax.TargetMember - uid: CilTools.Syntax.IdentifierSyntax.ToText(System.IO.TextWriter) name: ToText(TextWriter) href: api/CilTools.Syntax.IdentifierSyntax.html#CilTools_Syntax_IdentifierSyntax_ToText_System_IO_TextWriter_ @@ -6094,6 +6190,18 @@ references: commentId: Overload:CilTools.Syntax.SyntaxNode.GetChildNodes fullName: CilTools.Syntax.SyntaxNode.GetChildNodes nameWithType: SyntaxNode.GetChildNodes +- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type) + name: GetTypeDefSyntax(Type) + href: api/CilTools.Syntax.SyntaxNode.html#CilTools_Syntax_SyntaxNode_GetTypeDefSyntax_System_Type_ + commentId: M:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type) + fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax(System.Type) + nameWithType: SyntaxNode.GetTypeDefSyntax(Type) +- uid: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax* + name: GetTypeDefSyntax + href: api/CilTools.Syntax.SyntaxNode.html#CilTools_Syntax_SyntaxNode_GetTypeDefSyntax_ + commentId: Overload:CilTools.Syntax.SyntaxNode.GetTypeDefSyntax + fullName: CilTools.Syntax.SyntaxNode.GetTypeDefSyntax + nameWithType: SyntaxNode.GetTypeDefSyntax - uid: CilTools.Syntax.SyntaxNode.LeadingWhitespace name: LeadingWhitespace href: api/CilTools.Syntax.SyntaxNode.html#CilTools_Syntax_SyntaxNode_LeadingWhitespace