troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

[Psscor2/Psscor4]!ConvertTicksToDate

Psscor2/Psscor4で使用できるコマンド!ConvertTicksToDateついて記述します。
このコマンドを使用するとSystem.DateTimeのdateDataの値をわかりやすい値として表示します。

今回使用するアプリ
現在時刻を表示する単純なアプリです。

namespace ConvertTicksToDate
{
    class Program
    {
        static System.DateTime now;
        static void Main(string[] args)
        {
            now = System.DateTime.Now;
            Console.WriteLine("現在の時間は " + now);
        }
    }
}

!ConvertTicksToDateの実行例
!ConvertTicksToDateはDateTimeオブジェクトのdateDataフィールドを引数にとり、その値をわかりやすく表示します。
WriteLine()の前でデバッガを止めて、!ConvertTicksToDateを実行してみます。
(詳細なログは後述します。ここでは結果だけを表示します。)
0:000> !DumpObj 027ed7c0
Name: System.DateTime
MethodTable: 5ccc81d0
EEClass: 5caa0574
Size: 16(0x10) bytes
GC Generation: 0
(C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
5ccc9474  40000f4        4        System.UInt64  1 instance 9858056871670012590 dateData
5ccf2d0c  40000f0       30       System.Int32[]  0   shared   static DaysToMonth365
    >> Domain:Value  003833b0:027ed948 <<
5ccf2d0c  40000f1       34       System.Int32[]  0   shared   static DaysToMonth366
    >> Domain:Value  003833b0:027ed988 <<
5ccc81d0  40000f2       28      System.DateTime  1   shared   static MinValue
    >> Domain:Value  003833b0:027ed928 <<
5ccc81d0  40000f3       2c      System.DateTime  1   shared   static MaxValue
    >> Domain:Value  003833b0:027ed938 <<
0:000> !ConvertTicksToDate 9858056871670012590
9b7d5aae
As a TimeSpan: 11409788.01:06:07.0012590
As a DateTime: 03/27/2012 22:18:01

画面の出力・!PrintDateTimeの出力と結果が一致しています。

0:000> !PrintDateTime 027ed7c0
9b7d5aae
As a TimeSpan: 11409788.01:06:07.0012590
As a DateTime: 03/27/2012 22:18:01

補足
・!ConvertTicksToDateコマンドを!ctdと省略することも可能です。
・Psscor4で試してみたところ、筆者の環境ではうまくいきませんでした。
0:000> !ConvertTicksToDate 9858056866589882023
00000000
0
全く同じコマンドをPsscor2で行ったところ正しく表示されました。
0:000> !ConvertTicksToDate 9858056866589882023
6cb0b6a7
As a TimeSpan: 11409788.00:57:38.9882023
As a DateTime: 03/27/2012 22:09:33

・今回のデバッグログ・コメントです。
CommandLine: "C:\Users\seven\Documents\Visual Studio 2010\Projects\ConvertTicksToDate\ConvertTicksToDate\bin\Debug\ConvertTicksToDate.exe"
Symbol search path is: srv*
Executable search path is:
(578.d20): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=00000000 ecx=f9ff0000 edx=000edf88 esi=fffffffe edi=00000000
eip=77800fab esp=0024fa30 ebp=0024fa5c iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!LdrpDoDebuggerBreak+0x2c:
77800fab cc              int     3
0:000> sxe ld:mscorjit.dll
0:000> .symfix C:\dbg(x86)\sym
0:000> .reload
Reloading current modules
.....
0:000> g
ModLoad: 634b0000 6350b000   C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=7efdd000 edi=0024e8ec
eip=7777fc42 esp=0024e7c0 ebp=0024e814 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!NtMapViewOfSection+0x12:
7777fc42 83c404          add     esp,4
0:000> .load C:\dbg(x86)\Psscor2\psscor2.dll
0:000> !bpmd ConvertTicksToDate.exe ConvertTicksToDate.Program.Main  //Mainでブレークポイント
Found 1 methods...
MethodDesc = 001233ac
Adding pending breakpoints...
0:000> g
(578.d20): CLR notification exception - code e0444143 (first chance)
JITTED ConvertTicksToDate!ConvertTicksToDate.Program.Main(System.String[])
Setting breakpoint: bp 005C0070 [ConvertTicksToDate.Program.Main(System.String[])]
Breakpoint 0 hit
eax=001233ac ebx=0024f37c ecx=027ed7b0 edx=00000003 esi=003879c0 edi=00000000
eip=005c0070 esp=0024f354 ebp=0024f360 iopl=0         nv up ei pl nz ac pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000216
005c0070 55              push    ebp
0:000> !U eip
Normal JIT generated code
ConvertTicksToDate.Program.Main(System.String[])
Begin 005c0070, size 8e
>>> 005c0070 55              push    ebp
005c0071 8bec            mov     ebp,esp
005c0073 57              push    edi
005c0074 56              push    esi
005c0075 83ec1c          sub     esp,1Ch
005c0078 894df4          mov     dword ptr [ebp-0Ch],ecx
005c007b 833db031120000  cmp     dword ptr ds:[1231B0h],0
005c0082 7405            je      005c0089
005c0084 e8d813245d      call    mscorwks!JIT_DbgIsJustMyCode (5d801461)
005c0089 90              nop
005c008a 8d4dec          lea     ecx,[ebp-14h]
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\a1a82db68b3badc7c27ea1f6579d22c5\mscorlib.ni.dll
005c008d e81e8c695c      call    mscorlib_ni+0x1d8cb0 (5cc58cb0) (System.DateTime.get_Now(), mdToken: 060002d2)
005c0092 8b3dfc1e7603    mov     edi,dword ptr ds:[3761EFCh]
005c0098 83c704          add     edi,4
005c009b 3b0f            cmp     ecx,dword ptr [edi]
005c009d 8d75ec          lea     esi,[ebp-14h]
005c00a0 f30f7e06        movq    xmm0,mmword ptr [esi]
005c00a4 660fd607        movq    mmword ptr [edi],xmm0
005c00a8 b9d081cc5c      mov     ecx,offset mscorlib_ni+0x2481d0 (5ccc81d0)
005c00ad e86a1fb5ff      call    0011201c (JitHelp: CORINFO_HELP_NEWSFAST)
005c00b2 8945e8          mov     dword ptr [ebp-18h],eax
005c00b5 8b0530207603    mov     eax,dword ptr ds:[3762030h]
005c00bb 8945e0          mov     dword ptr [ebp-20h],eax
005c00be 8b7de8          mov     edi,dword ptr [ebp-18h]
005c00c1 83c704          add     edi,4
005c00c4 3b0f            cmp     ecx,dword ptr [edi]
005c00c6 8b35fc1e7603    mov     esi,dword ptr ds:[3761EFCh]
005c00cc 83c604          add     esi,4
005c00cf 3b0e            cmp     ecx,dword ptr [esi]
005c00d1 f30f7e06        movq    xmm0,mmword ptr [esi]
005c00d5 660fd607        movq    mmword ptr [edi],xmm0
005c00d9 8b45e8          mov     eax,dword ptr [ebp-18h]
005c00dc 8945dc          mov     dword ptr [ebp-24h],eax
005c00df 8b4de0          mov     ecx,dword ptr [ebp-20h]
005c00e2 8b55dc          mov     edx,dword ptr [ebp-24h]
005c00e5 e8f6cc6c5c      call    mscorlib_ni+0x20cde0 (5cc8cde0) (System.String.Concat(System.Object, System.Object), mdToken: 060001c6)
005c00ea 8945e4          mov     dword ptr [ebp-1Ch],eax
005c00ed 8b4de4          mov     ecx,dword ptr [ebp-1Ch]
005c00f0 e80744b95c      call    mscorlib_ni+0x6d44fc (5d1544fc) (System.Console.WriteLine(System.String), mdToken: 060007c9)
005c00f5 90              nop
005c00f6 90              nop
005c00f7 8d65f8          lea     esp,[ebp-8]
005c00fa 5e              pop     esi
005c00fb 5f              pop     edi
005c00fc 5d              pop     ebp
005c00fd c3              ret
0:000> bp 005c00f0  //WriteLineの前でブレークポイント
0:000> g
Breakpoint 1 hit
eax=027ee644 ebx=0024f37c ecx=027ee644 edx=00000000 esi=027ed7c4 edi=027ed9ec
eip=005c00f0 esp=0024f32c ebp=0024f350 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
005c00f0 e80744b95c      call    mscorlib_ni+0x6d44fc (5d1544fc)
0:000> !DumpHeap -type System.DateTime
Loading the heap objects into our cache.
Address       MT     Size
027ed7c0 5ccc81d0       16    0 System.DateTime
027ed928 5ccc81d0       16    0 System.DateTime
027ed938 5ccc81d0       16    0 System.DateTime
027ed9e8 5ccc81d0       16    0 System.DateTime
0:000> !PrintDateTime 027ed7c0
9b7d5aae
As a TimeSpan: 11409788.01:06:07.0012590
As a DateTime: 03/27/2012 22:18:01
0:000> !DumpObj 027ed7c0
Name: System.DateTime
MethodTable: 5ccc81d0
EEClass: 5caa0574
Size: 16(0x10) bytes
GC Generation: 0
(C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
5ccc9474  40000f4        4        System.UInt64  1 instance 9858056871670012590 dateData
5ccf2d0c  40000f0       30       System.Int32[]  0   shared   static DaysToMonth365
    >> Domain:Value  003833b0:027ed948 <<
5ccf2d0c  40000f1       34       System.Int32[]  0   shared   static DaysToMonth366
    >> Domain:Value  003833b0:027ed988 <<
5ccc81d0  40000f2       28      System.DateTime  1   shared   static MinValue
    >> Domain:Value  003833b0:027ed928 <<
5ccc81d0  40000f3       2c      System.DateTime  1   shared   static MaxValue
    >> Domain:Value  003833b0:027ed938 <<
0:000> !ConvertTicksToDate 9858056871670012590
9b7d5aae
As a TimeSpan: 11409788.01:06:07.0012590
As a DateTime: 03/27/2012 22:18:01


  1. 2012/03/29(木) 14:15:35|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<[sos]!U:アセンブラの表示 | ホーム | IntelliTrace Collectorで本番環境のIntelliTraceデータの収集>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/45-708c20ec
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (23)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。