コードの表示

コードビューは、シンタックスハイライト、折りたたみ可能なブロック、アドレスベースのナビゲーション、および相互参照を統合しています。プロシージャを理解するには高水準のリストを使用し、その結果がどのように得られたかを確認するには逆アセンブルとファイルバイトを使用します。

識別子のハイライトとナビゲーション

レジスタ、変数、または関数名にカーソルを置き、現在のリスト内の一致する出現箇所をハイライトします。ローカル変数である var_XX および str_XX は、メンバー表現の基底として使用される場合(例えば str_1.Value)もハイライトされます。global_XX 識別子を選択すると、その出現箇所が現在のプロシージャ内でハイライトされ、これはプロジェクト全体の参照検索とは別です。

認識されたプロシージャ呼び出しをダブルクリックして呼び出されたプロシージャを開きます。代わりにアドレスのような定数は、HEX エディタ内の対応するバイトに導くことができます。Esc、ナビゲーション矢印、またはマウスの Back/Forward ボタンを使用して表示履歴を移動します。

逆コンパイルされたコードと逆アセンブルされたコードの統合

逆コンパイルされたリストを右クリックし、逆アセンブラにコピー (Copy to disassembler) を選択するか、コードビューで D を押します。これにより、再構築されたステートメントと現在のプロシージャの低レベルリストが統合されます。自分の位置を保持するには、コマンドを呼び出す前にカーソルを関連する loc_ アドレスに置きます。

この操作では アドレスを追加 (Add Addresses) を有効のままにしてください(逆コンパイル設定)。逆アセンブラ (Disassembler) は常にアドレスを表示します。アドレスを追加 は 逆コンパイラ (Decompiler) ビューのアドレス表示を制御します。

逆コンパイル結果と逆アセンブル結果の比較表示

変数の名前変更

VB5/6 P-Code および Native Code については、変数を右クリックし、名前変更 (Rename variable) を選択するか、変数にカーソルを置き N を押します。意味のある解析名を入力します。逆コンパイラは名前衝突と予約済みキーワードをチェックします。名前変更を元に戻すには、名前の変更を元に戻す (Undo renaming) または Ctrl+Shift+Z を使用します。このコマンドは通常のテキスト編集の Undo とは独立しています。

名前変更により復元されたリストの解析が容易になりますが、コンパイルによって削除された名前は復元しません。アナリストが割り当てた名前は、発見事項を伝える際に注釈として扱ってください。

呼び出し元とグローバル変数の参照の検索

呼び出し元を見つけるには、ソリューションエクスプローラー (Solution explorer) 内のプロシージャを右クリックし、参照の検索 (Find references) を選択するか、ツリーでそのプロシージャが選択されている状態で X を押します。結果には、選択したプロシージャへの呼び出しが認識されたプロシージャが一覧表示されます。結果をダブルクリックして呼び出し元を検査します。このワークフローは VB5/6 および .NET をサポートしており、.NET サポートはバージョン 12.4 で追加されました。

グローバル変数を調査するには、コードビュー内のその識別子にカーソルを置き X を押します。したがって同じキーは、ツリー内のプロシージャ参照とコード内のグローバル変数参照を検索します。認識された参照のリストは、追加の間接的、動的解決、または難読化された使用がないことを確立するものではありません。

文脈依存のショートカット

フォーカスショートカットアクション
コードNカーソル下の変数の名前変更(VB5/6)。
コードXカーソル下のグローバル変数の参照を検索。
コードD現在の逆コンパイルされたコードを逆アセンブラにコピー。
コードF4現在の行のアドレスにトレース;トレース機能が必要です。
コードCtrl+Shift+Zカーソル下の変数の名前変更を元に戻す。
ツリーX選択されたプロシージャの参照を検索。
ツリーGセクションへのジャンプを開く。
ツリーCtrl+C選択されたオブジェクトの完全なツリーパスをコピー。
ツリーSpace or Insert選択された項目をマークまたはアンマーク。

単一文字のショートカットはフォーカスされたビューに依存し、入力フィールドでの通常のタイピングを置き換えません。フォーカスを切り替えるには Alt+1 を使用します。Ctrl+T および Ctrl+F については 文字列検索、ツリーパスとアドレスについては アドレスへのジャンプ、エミュレータの制限については トレース を参照してください。