概要 WinDbg で.NET アプリのデバッグの際、sos.dll の!StopOnException を使用すると、特定の例外発生時のみBreak させる事ができます。 内容 特定の.NET の例外発生時にのみWinDbg にBreak する手順0. WinDbg で.NET アプリのデバッグを開始します。1. .NET 用のデバッガーエクステンションであるsos.dll を読み込みます。.NET 4.0 より前のアプリに対しては”.loadby sos mscorwks” で、.NET 4.0 以降のアプリに対しては”.loadby...
- 2014/12/22(月) 20:31:45|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
概要 WinDBG で使用できる.NET 用のデバッガーエクステンションSOSEX.dll を紹介します。SOSEX.dll はフリーで使用することができます。 内容 SOSEX.dll とはSOSEX.dll は、WinDBG の.NET 用のデバッガーエクステンションで、フリーで使用することができます。SOS.dll では実行できない種々のコマンドが実装されております。SOSEX.dll の使用方法ダウンロードは、作者のページより行うことができます。SOSEX.dll を使用するには、”...
- 2014/04/15(火) 21:34:10|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
概要.NETのプロセスやダンプの調査に使えるライブラリ – ClrMD – を紹介します。ClrMD は、Microsoft のエンジニアにより公開されたライブラリで、Microsoft 社内でも使われているものです。 内容 ClrMD を用いると、.NET のプロセスやダンプを調査するためのプログラムを作成することができます。すなわち、SOS デバッガーエクステンション(= sos.dll) が行っているようなことを行うプログラムを作成することができます。よって、...
- 2013/11/24(日) 22:29:59|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
WinDbg等で使用できる.NET用のデバッガエクステンションsos.dllで、配列の情報を表示する!DumpArrayを紹介します。 【今回使用するサンプルアプリ】以下の、配列を表示するだけの単純なアプリを使用して、!DumpArrayの使用例を見てみます。 using System; namespace MyDumpArray{ class Program { static void Main(string[] args) { string[] stringarray = new string[5] { "a", "b", "c", "d",...
- 2012/11/13(火) 15:01:53|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
.NET用のデバッガエクステンションsos.dllのコマンド!ThreadPoolについて記述します。!ThreadPoolを利用すると、システムのCPU使用率やスレッドプールの状態を表示することができます。 【今回使用するサンプルアプリ】CPUに負荷をかけるサンプルプログラムを利用して、!ThreadPoolの使用例を見てみます。このコードは、CPUに負荷のかかるメソッドMyThreadMethod()をスレッドプールに登録・実行するだけの単純なアプリです。 usin...
- 2012/10/11(木) 14:48:11|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
Psscor2/Psscor4で使用できるコマンド!SyncBlkについて記述します。このコマンドを使用すると、アプリのデッドロックの調査の解決につながりえます。 今回使用するアプリデッドロックを起こす典型的なアプリを使用します。(こちらのコードをもとに、少し改良しました。)このアプリはlock()を用いてデッドロック状態になります。(コード自身は、今回は重要ではありません。) using System;using System.Threading; namespace ...
- 2012/08/02(木) 09:14:11|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
ビルドをreleaseビルドで行うと、通常!clrstack実行時に関数の引数やローカル変数の値が確認できません。最適化が行われているためです。そこで、今回はreleaseビルドでも、再コンパイルすることなく!clrstack実行時に関数の引数やローカル変数の値が確認できるようになる方法を記述します。 Releaseビルド時にも!clrstackで関数の引数やローカル変数の値を表示する方法Releaseビルド時にも!clrstackで関数の引数やローカル変数の...
- 2012/06/19(火) 14:39:49|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
.NETアプリのダンプ調査方法について、以下の流れでまとめました。1. .NETアプリのダンプ取得方法2. WinDbg.exe(=ダンプ調査に使用するデバッガー)のインストール3. WinDbgを使った.NETアプリのダンプ調査方法以下詳細を見てみます。 1. .NETアプリのダンプ取得方法.NETアプリのダンプを取得する方法は種々あり、以下が有名なツールです。・タスクマネージャー・DebugDiag・procdump・adplusダンプ取得時の注意点は.NETアプリのダ...
- 2012/06/08(金) 14:51:49|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
WinDbg等で使用できる.NET用のデバッガエクステンションsosのコマンド!finalizequeueについて記述します。!finalzequeueを利用すると、ファイナライザの実装の問題を検出することが可能です。 ファイナライザとは?ファイナライザとは、どのクラスにも指定できるオプションのメンバで、C#で記述するには~<クラス名>という構文を利用します。例:クラス名がMyClassの場合、ファイナライザは~MyClass()となります。 class ...
- 2012/05/20(日) 15:20:37|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0
WinDbg等で使用できる.NET用のデバッガエクステンションsosのコマンド!ObjSizeについて記述します。!ObjSizeを利用すると、オブジェクトのサイズを表示させることができます。 今回使用するアプリ以下の単純なアプリを利用して!ObjSizeの利用例を見てみます。 using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyObjSize{ class Program { class MyClass1 ...
- 2012/05/19(土) 15:27:05|
- SOS・Psscor2/Psscor4
-
| トラックバック:0
-
| コメント:0