Visual Studio デバッガー用の
ヘッドアップ ディスプレイ

  • 強力なデバッガーのビジュアライザーから全体像を把握
  • C# のデバッグを簡単に、シンプルに、効率的に
  • バグをピンポイントで検出、重要なデータだけをフォーカス

Visual Studio 2012, 2013, 2015, 2017 対応!

  今すぐ購入 / 自動見積     評価版ダウンロード  

OzCode とは

OzCode は革新的なデバッグ ツールで、Visual Studio に統合され、C# のデバッグ作業を強力に支援します。OzCode の強力なデバッガーによって、バグをピンポイントで特定でき、重要なデータのみに焦点を当てることにより、開発者は貴重な時間と労力をセーブできます。

OzCode Japan ツアー

2017年 4月17日から21日まで、OzCode の開発者が日本に来日します。OzCode の開発者から直接デモを受けてみませんか? 新バージョンに含まれる新機能の説明を含んだ約 90分間のハンズオン セッションは、もちろん無料です。ご興味がありましたら、こちらよりお問い合わせください。

OzCode の特長

LINQ のデバッグ

LINQ は、強力で簡潔で表現力あるコードの作成を可能にしますが、LINQ を使用することにより、コードの可読性が犠牲となってしまいます。OzCode の革新的な LINQ デバッグ ビジュアライゼーションでは、Reveal や Search などの強力な OzCode ツールを活用しながら、さまざまなアイテムが LINQ パイプラインをどのように通過したかを正確に把握でき、すべてのラムダ式の戻り値を確認できます。

Linq デバッギング

マジック グランス - 複雑な数式をわかりやすく表示

検索 - 干し草の山の中にある 1 本の針も探します

表示 - 関係あるデータだけをフォーカス

比較 - 差異を表示

例外の追跡 - 内部例外まで掘り下げます

トレース - デバッグを行うようにログに追加

 

予測

foreach ループ内でループ回数をビジュアル化でき、いつでも次の処理に進めます。

クイック アタッチ

ショートカットキーで実行中のプロセスにアタッチできます。

クイック アクション

状況依存コマンドは毎日のデバッグ タスクを自動化します。指定したクラスの全てのメンバにブレイクポイントの追加もできます。

全インスタンスの表示

その時メモリにある特定のタイプの全オブジェクトを調査します。すぐにメモリの問題を診断でき、関連オブジェクトのリファレンスを突き止められます。

OzCode の機能

OzCode の機能と Visual Studio のバージョン




LINQ でのデバッグ

LINQ を使用することで、読みやすく、管理しやすい、強力で、簡潔な表現力のあるコードを書くことができるようになります。 唯一の問題は、LINQ を使用すると、コードの可読性が犠牲になってしまう点です。LINQ を使用しているコードの行でステップオーバー (F10) を行うと、複雑なロジックを多く実行するものの、実際に何が起こったのか理解することができません。ブレークポイントと手動でのステッピングを使用して LINQ をデバッグすると、無駄な時間を費やしてしまうことがあります。

OzCode の革新的な LINQ デバッグ ビジュアライゼーションでは、Reveal や Search などの強力な OzCode ツールを活用しながら、さまざまなアイテムが LINQ パイプラインをどのように通過したかを正確に把握でき、すべてのラムダ式の戻り値を確認できます。

数値で表示


デバッグ中に、実行ポイント (黄色の線) が LINQ クエリに達すると、各 LINQ 演算子の横にインジケーターが表示され、生成されたアイテムの数が示されます。

Numeric Indicators

これらのインジケーターは、各オペレーターが消費したアイテムの数と生成されたアイテムの数を一目で把握できるため、重点を置くオペレーターを決定するのに役立ちます。

LINQ DataTip


数値インジケーターの 1 つをクリックすると、OzCode は LINQ デバッグモードになり、与えられた演算子が生成した項目を示す LINQ DataTip ウィンドウが開きます。 DataTip の "before/after" ボタンを押すと、生成されたアイテムとそのオペレータが消費したアイテムをすばやく切り替えることができます。

Quick DataTip buttons

項目の 1 つをクリックすると、ヘッドアップ ディスプレイが更新され、各ラムダが LINQ パイプラインを通過した特定の項目として返されたものが反映されます。 もう 1 つの選択肢は、マウスホイールを使用して、数値アノテーションにカーソルを合わせることで、項目をすばやくスクロールし、その値がデバッグされたコードで、即時に変更されることを確認できます。

Using mouse scroll

LINQ 解析ウィンドウ


詳細な解析ツールウィンドウは、DataTip ウィンドウ、またはデバッグされたクエリの左側にあるラムダ アイコンをクリックして開くことができます。

Opening detailed LINQ analysis

SearchReveal を使用して目的のオブジェクトを検索し、operator breadcrumbs を使用して LINQ パイプラインをナビゲートし、LINQ クエリのフローを視覚化します。

LINQ クエリでの例外


対応が最も難しいバグの 1 つは、複雑な LINQ クエリの深い部分から例外がスローされたときで、これはデバッグがほとんど不可能です。OzCode は LINQ 数値インジケーターを赤で強調表示し、LINQ DataTip または LINQ Analysis Window を使用してドリルダウンし、その例外を発生させた項目を正確に調べることによって、例外が発生する前に警告します。

Exception in LINQ

クエリ構文のサポート


LINQ を使用して、コレクションを照会、フィルタ、変換する場合、開発者はラムダベースの API または SQL のようなクエリ式の 2 つのオプションから選択できます。

どの構文を使用するかの選択は、個人の好みや問題の性質に依存します。流暢な構文は、より簡潔であり、クエリが単純な場合に好まれる傾向があります。 しかし、より複雑なクエリのほうが、クエリの構文ではるかに簡単に表現できるため、'let' キーワードと複数の from 句を活用して複雑なデータを扱うことができます。

OzCode は LINQ の両方の特色を完全にサポートしています。クエリ構文を使用した場合、OzCode はどの項目がどの from 句から来たのか、各項目の let 式で計算された値などを視覚的に強調表示します。

Using Query Expression API


エクスポート

Export では、デバッグ セッション終了後に使用するオブジェクト インスタンスのテキスト表現を、ファイルまたはクリップボードに保存することができます。

open export

Export を使用すると、開発者はオブジェクトを JSON や XML に保存したり、または最後のデバッグ実行の値を使用して、単体テスト作成に使用可能な C# コードとして保存することができます。

Serialization options

エクスポートされたインスタンスが保存 (またはクリップボードにコピー) されると、それを使用してインスタンス状態を再現したり、外部の差分ツールを使用して、解析または比較することができます。

       

JSON 出力の場合、OzCode は業界標準の Newtonsoft Json.NET シリアライザを使用しています。これにより、デシリアライズと結果の処理が非常に簡単になります。


ヘッドアップ ディスプレイ

調査


複雑な式をデバッグするのは簡単ではありません。 メソッドの呼び出しによって返された内容をどのように確認しますか? それぞれのブール条件は、長い入り組んだ if 文でどのように判断しましたか? コードを簡素化したり、個々の結果を格納する変数を追加することなく、これらの質問に答えることは困難です。 OzCode の強力な「Simplify」ビジュアライゼーションにより、コード内で何が起こっているかを即座に把握することができます。 式をステップ実行すると、赤と緑の色分けによって、どの式がそれぞれ false/true を返すかを正確に確認できます。赤の または緑の で、式全体の結果を示します。

Simplify ボタン () をクリックすると、式が即座に視覚化され、ドリルダウンして個々の表現結果を確認できます。


履歴の検索


Simplify の最も良い点は、コードの実行の履歴を見ることができるということです。コード行をステップオーバー (F10) するたびに、新しい Simplify ボタン () が表示され、履歴を確認することができます。

キーボード ショートカット

+ キーで、現在の行を視覚化します。次に + または、 + を使用して、コードの異なる行に移動します。 キーを押しながらデバッグして、数字キー ( - ) を選択すると、視覚化する文を直接選択できます。

マジック グランス


機能紹介ビデオ / ティーザー

ツールバーにあるアイコン () をクリック (または + + キー) すると、マジック グランスに切り替えることができます。マジック グランスでは、ステップスルーしたコードの各行の概要を表示するので、コードの本質を確認することができます。


予測


OzCode は、コード実行の予測分析 (または "占い" とも呼んでいます) を行います。次の switch 文では、OzCode は未来を予測しています。F10 を押した際に、どこに向かうかを示す矢印が表示され、無関係なコードパスが半透明になります。


ライブ コーディング


Predict (予測) は、「ライブコーディング」という言葉に新しい意味をもたらします。これは、デバッグ中に行った変更に対し、即座にフィードバックを与え、コーディングの間違いを非常に素早く修正できます。

VS2015 を使用している場合、Predict は LINQ クエリなどの、より複雑な式を予測することもできます。


ブレークポイント

条件付きブレークポイント


条件付きブレークポイントは、デバッグを非常に生産性の高いものにすることができますが、OzCode を使用しないと、雑用のように感じてしまいます。OzCode は条件付きブレークポイントを簡単に追加します! クリックするだけで、OzCode は特定のプロパティ値に基づいて条件付きブレークポイントを設定し、ユーザーのために述語をあらかじめ入力します。

ブレークポイントに述語を追加するには、関連する変数にカーソルを置き、[Add Condition] ボタンをクリックします。


When Set... Break


把握しにくいバグは、状態の変化を伴うものです。プログラムの実行中のある時点で、いくつかのオブジェクトの状態が無効になる場合はどうしますか (さらに、いつ、どこでそのようになったのかも正確に判断できない場合に)? デバッガの値を調べているうちに、問題のあるプロパティ値を見つけたら、Magic Wand を使って "When Set - > Break" を選択します。次回プロパティ値が変更されると、OzCode はデバッガに入り込み、プログラムの状態を検査し、問題のある値が、どのようにその部分に到達したかを正確に把握することができます。これらのセッター ブレークポイントは、通常のプロパティと自動プロパティの両方で機能し、ソースコードを持たないプロパティにセッター ブレークポイントを追加することもできます。


例外

例外の追跡


機能紹介ビデオ / ティーザー

OzCode を使用しない場合、例外の調査は、内部の例外の追跡、長時間の呼び出しスタックのスクロール、エラーの意味を理解するために例外の関連するデータのスクーニングを行ったりと、ちょっとした作業になります。OzCode を使用すると、例外に関するすべての関連情報が便利なツールウィンドウに表示されます。非常に便利なブレッドクラム コントロールを使用して、各内部例外をナビゲートし、Google を起動したり、Visual Studio 内からスタック オーバーフローの検索を開始することもできます。


例外の予測


OzCode の予測機能は、起こりそうな例外について警告します。しかし、それだけではありません。例えば、OzCode が差し迫った NullReferenceException を検出した場合、どの表現が例外を引き起こすのかを正確に示す赤いハイライトが表示されます。

OzCode の予測例外解析により、例外が発生する前に例外を修正することが非常に簡単になります。


トレース


機能紹介ビデオ / ティーザー

難しい問題をデバッグする際に、特にレガシーコードや多量のマルチスレッドのシナリオをデバッグする際、コードを実行するとシステムが何をするかを把握しようとすると、頭の中で一度に 12 個のボールをジャグリングするような気分になります。 OzCode を使用すると、プログラム実行中にキーポイントで、オンザフライで動的ロギングを簡単に追加でき、Visual Studio に取り込まれた統合されたログビューアから出力を確認できます。デバッグをやめ、ログコードを追加し、簡単なトレースを追加するために、再ビルドする必要はありません。

トレースしたい値に対して "Create Tracepoint" コマンドを使用するだけです。トレースポイントはブレークポイントと似ていますが、プログラムの実行を中断するのではなく、トレースメッセージを書き込みます。

次に、"Add To Tracepoint" ボタンを使って、バグに関係すると思われる情報を追加します。

最後に、トレース メッセージが Tracepoints Viewer にあることを確認します。


クイック アタッチ


機能紹介ビデオ

多くのプロジェクトでは、F5 を押すだけでデバッグ セッションを開始することはできません。代わりに、"Attach to Process" オプションを使用して、プロセスの長いリストから正しいプロセスを見つけて、最後にそれに接続する必要があります。 その後、デバッグ セッションを再開し、同じことをやり直す必要があります。そしてそれを何度も繰り返します。

QuickAttach を使用すると、OzCode はプロセスに超高速で接続するルーチンを作成します。 "QuickAttach" ウィンドウには、最後にアタッチしたプロセスの一覧が表示されます。 "ピン" ボタンをクリックすると、そのプロセスにショートカットキーを添付できます。

これだけです。今後、"w3wp.exe" に接続する場合は、 + + キーを押すだけです。

アタッチしたいプロセスが "Recently Attached" リストにない場合は、いつでもそのプロセスを検索したり、UI の外観をプレビューすることもできます。

OzCode を使用すると、どの Web サイトに接続しているかを正確に示すことができ、IIS アプリケーションプールに簡単に接続できます。



機能紹介ビデオ / ティーザー

オブジェクトやコレクションをデバッグするときは、特定のプロパティやフィールド、またはプロパティやフィールド内に保持されている値を探していることがよくあります。残念なことに、これにはたくさんのクリックや、多くのスクロール作業、またはカスタムのデバッグ用のコードの記述が必要になります。単純な構造であっても、アイテムを見つけるのは簡単ではありません。複雑なオブジェクト グラフでは言うまでもありません。OzCode の検索機能では、これはもはや問題ではありません。コレクションのサイズやオブジェクトグラフの複雑さにかかわらず、素早く簡単にメンバーの名前と値を検索できます!


foreach loop 内での予測


デバッグセッション中に foreach ループをステップ実行すると、ループ内の場所を特定したり、コレクション内の特定のアイテムに移動するなどの一般的な問題が発生する可能性があります。Visual Studio はこれらの質問に答える方法を提供していますが、簡単ではありません。 OzCode の革新的な予測機能により、foreach ループの処理は簡単で直観的です。OzCode の予測機能は、デバッグ ビジュアライザで、ループ内のどこにいるかを常に把握し、コレクション内の特定のアイテムに移動できるようにします。 それはすでに反復されたアイテム、現在のアイテム、および今後のアイテムを含むコレクションのビジュアル表現を提供します。 コレクションの特定のアイテムの確認が必要ですか? アイテムを右クリックして 'Run to item' を選択すると、ループが実行され、目的のアイテムがブレークします。 条件付きブレークポイントを設定して対処する必要はありません!


比較


機能紹介ビデオ / ティーザー

ファイルを比較する場合は、diff アプリケーションを使用して相違点を特定します。残念ながら、2 つのオブジェクトを比較する必要があるときは、自分の目とメモリを信頼する必要があります。OzCode の比較機能を使用すると、クリックするだけで、オブジェクトとコレクションを比較することができます。結果は横並びで表示され、構造の詳細をドリルダウンすることができます。

時間の経過とともにオブジェクトの変化を追跡するのはどうでしょうか?ユーザーのクラスのインスタンスを取り、さまざまな変異を実行する、長くて複雑なメソッドを考えてみましょう。何が実際に変わりましたか? 多くのメンバーがあるクラスでは、かなりの数のメンバー自身も含まれている場合もあります。違いを見つけるのは困難です。OzCode の比較機能を使用すると、オブジェクトの状態を保存し、後でデバッグ中のオブジェクトを元の保存状態と比較することができます。この機能を実行した後、[Compare to Snapshot] オプションを選択すると、相違点を確認できます。


必要なデータの表示


機能紹介ビデオ / ティーザー

オブジェクトは多くのプロパティを持つことができますが、デバッグ時にはそれらのすべてが有用ではありません。通常、ユーザーは選択した少数しか興味はありません。 Customer クラスでは、3D 空間の Point の場合はID と Username のプロパティがあり、X、Y、Z の各フィールドがあります。OzCode の "Reveal" 機能により、重要なデータだけに集中することができます。確認したいプロパティに星印を付けると、オブジェクトのすぐ隣に表示されます。たとえば、Customer オブジェクトのコレクションがあり、FirstName と LastName の名前を確認したい場合は、FirstName プロパティと Surname プロパティに星印を付けるだけで、コレクション内のすべてのオブジェクトが、プロパティの隣に表示されます。選択した内容は、デバッグ セッション中や異なる Visual Studio ソリューションファイル間で保持されます。


カスタム エクスプレッション


機能紹介ビデオ

デバッグ時に、必要な情報がオブジェクトのフィールドやプロパティに含まれず、オブジェクトに基づいた計算や式の場合があります。この特定のデバッグセッションのためだけに、異なるプロパティセットを使用したいと思うかもしれません。

たとえば、ゲーム内の Player オブジェクトを確認している際、最も近い敵からの距離を (そのようなプロパティをインターフェイスに追加せずに) 確認したいかもしれません。

OzCode のカスタム表現機能を使用すると、そのタイプの他のメンバーと同様に表示される任意のオブジェクトタイプで、複数のカスタム式を作成できます。最も関心のあるものに星印を付けることもできます。

たとえば、Customer クラスには、そのプロパティ内に給与履歴を持っているとします。バグを修正するために実際に必要となるのは、顧客の一定期間の税金の場合、Customer 変数で "Add Customer Expression" オプションを使用し、確認したい式を記述します。この式は、式の値を含む Customer クラスのプロパティとして表示されます。


フィルタの収集


機能紹介ビデオ

コード内のコレクションをフィルタリングすることは比較的簡単で、それを実行する方法はたくさんあります。しかし、デバッグ中にどのようにフィルタリングしますか? たとえば、Customer オブジェクトのコレクションがあり、35年以上前のものをフィルタリングしたいとします。Visual Studio のイミディエイト ウィンドウとウォッチ ウィンドウは、ラムダをサポートしていません。OzCode のフィルタ コレクション機能を使用すると、任意のコレクションにフィルタ式を適用できます。顧客の問題を解決するには、顧客のコレクションを選択し、そのフィルタを DateTime.Today.Year - [obj] .Birthday.Year > 35 と設定し、Enter を押して結果を確認できます。コレクションがフィルタリングされると、他のすべての機能もフィルタリングされた結果になります。


クイック アクション


OzCode のクイック アクションは、ユーザーの現在の状況に応じて、最も関連性の高いアクションを提供します。 クラス内のすべてのメソッドにブレークポイントを追加したいですか? 特定のメソッドへのすべてのエントリをトレースしますか? すぐに特定のコード行に進みたいですか? Alt + Shift + D を押してクイック アクション メニューを開くか、魔法の杖のアイコンをクリックして、魔法を実行してください!


全てのインスタンスの表示


機能紹介ビデオ

OzCode は、調査したい特定のオブジェクトをメモリ内で検索する作業を簡単にします。"Show All Instances of Type" を開くだけで、そのタイプのオブジェクトが、メモリにすべて入っていることを確認することができます。OzCode の新しい探査ツールを使用することで、なぜそのオブジェクトはまだメモリに残っているのか、この値を含むオブジェクトがあるかどうかといった疑問に素早く簡単に答えることができるようになります。

OzCode 機能紹介ビデオ

インスタンスの表示

必要なデータの表示

検索

クイック アタッチ

例外の追跡

フィルタ

カスタム エクスプレッション

トレース

わかりやすい表示

スナップショットの比較

OzCode のウェビナー (録画)

OzCode でのデバッグ (47分55秒)