troushoo

特定の.NETの例外発生時にのみWinDbg にBreak する方法 : !StopOnException

概要

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 sos clr” でsos.dll を読み込むことができます。
.loadby sos mscorwks (.NET 4.0 より前)

.loadby sos clr (.NET 4.0 以降)

2. “!StopOnException –Create <例外>” を実行し、”<例外>”発生時にBreak するように設定します。
例えば、”!StopOnException –Create System.OutOfMemoryException” といった感じです。
!StopOnException -Create <例外>

3. アプリ実行中、System.OutOfMemoryException が発生すると、Break します。
以下は、WinDbg にBreak した時のスクリーンショットです。
「System.OutOfMemoryException hit」とあり、System.OutOfMemoryException が発生したためにBreak したことがわかります。


補足
・今回紹介した!StopOnException は!soe と省略することも可能です。


・!StopOnException を実行すると”c0000005 Exception” という例外が発生することがありました。
しかし、例外が発生後に同じコマンドを再度実行すると、問題なくコマンドが成功しました。
!StopOnException でc0000005 Exception in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.StopOnException debugger extension.


情報元
My SOS cheat sheet (英語)

関連記事
[SOS]!PrintException:例外情報の表示


  1. 2014/12/22(月) 20:31:45|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<LINQ クエリのみならず、任意のC#/VB が実行可能な、フリーでも使えるLINQPad (1) | ホーム | 行の色の理由を調べる方法 : Wireshark>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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