NetInverse Developers Blog

April 9, 2009
Category: Debugging — Tags: , , , , — admin @ 10:54 am

Command: !EHInfo

!EHInfo (<MethodDesc address> | <Code address>)

!EHInfo shows the exception handling blocks in a jitted method. For each handler, it shows the type, including code addresses and offsets for the clause block and the handler block. For a TYPED handler, this would be the “try” and “catch” blocks respectively.

Sample output:

!clrstack
OS Thread Id: 0xb10 (2832)
ESP       EIP
0012f3c0 00ff019a IEnumerableTest.Utils.EnumToArray[[IEnumerableTest.Program+RoleType, LinqSelectTest]]()
0012f424 00ff00b9 IEnumerableTest.Program.Main(System.String[])
0012f69c 79e71b4c [GCFrame: 0012f69c] 

!ip2md 00ff00b9
MethodDesc: 00933000

!ehinfo 00933000
MethodDesc: 00933000
Method Name: IEnumerableTest.Program.Main(System.String[])
Class: 00931338
MethodTable: 0093301c
mdToken: 06000002
Module: 00932c5c
IsJitted: yes
CodeAddr: 00ff0070

EHHandler 0: TYPED
Clause: [033bbd2b, 033bbd3c] [8b, 9c]
Handler: [033bbd3c, 033bbd50] [9c, b0]

EHHandler 1: FINALLY
Clause: [033bbd83, 033bbda3] [e3, 103]
Handler: [033bbda3, 033bbdc5] [103, 125]

EHHandler 2: TYPED
Clause: [033bbd7a, 033bbdc5] [da, 125]
Handler: [033bbdc5, 033bbdd6] [125, 136]

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

©2009 NetInverse. All rights reserved. Powered by WordPress