2016-10-23 8 views
-1

私はカーネルのデバッグにVisual Studioを使用しています。はい、私はすべてのチュートリアルはWinDbgを使用すると言うが、ビジュアルスタジオは実際にカーネルデバッグのために壮観です。それはより最近の開発です。ビジュアルスタジオでのカーネルデバッグ:ウォッチウィンドウの配列の長さ

私はウォッチウィンドウにポインタを置いて、それが配列であると仮定して、ドロップダウンリストとして複数のアイテムを一度に見たいと思います。通常Visual Studioでは、複数の項目を取得するためにポインタの後に "、AMOUNT"を追加しますが、これはカーネルデバッグモードでは機能しません。

このオプションは利用できますか?

[編集]リクエストに応じて、サンプル画像を添付しました。ウォッチウィンドウでは、 "ProcessPath"変数のデータに複数回アクセスしようとしました。カーネルモードのデバッグ、ウォッチウィンドウの間に

enter image description here

+0

これは、VC++/VCポインタのような一般的なアプリケーションのデバッグではうまく機能するのでしょうか? 1つのドライブで簡単なサンプルを共有できますか?ウォッチウィンドウでテキストをどのように入力しましたか?あなたは私にスクリーンショットを共有できますか? –

+0

画像を添付しました。 – Dakusan

+0

ツール - >オプション - >デバッグの下で「ネイティブ互換モードを使用する」または「ネイティブ互換モードを使用する」を有効にしていますか?実際のカーネルのデバッグエキスパートではありませんが、2つのデバッグオプションがデバッグウォッチウィンドウに影響を与えるような同様の問題を抱えています。まだ助けがなければ、シンプルなサンプルを共有してください。環境をセットアップしてこの問題を再現することができます。 –

答えて

2

WinDBGの式エバリュエータを介して動作するように見えます。つまり、WinDBGのウォッチウィンドウとほとんど同じです。したがって、あなたの質問は実際にはVisual Studioに関連するものではなく、むしろWinDBGの腕時計になってしまいます。

,amountの構文では、結果としてamountが表示されます.WindDBGは、結果として,を "評価して破棄"します。これはC++の場合と同じです。これは、ローカル変数のWinDBG構文である$!で変数を前置する理由を説明します。

WinDBGではかなりのC++構文がサポートされていますが、残念ながら(char(*)[4])$!ProcessPathなどのC++キャストトゥーアレイ構文を認識できません(ちなみに、これはVSデバッガのusermodeターゲットをデバッグするときに機能します)。

私はWinDBGで配列にキャストする単一の方法が見つかりませんでした。

ProcessPath[0] 
ProcessPath[1] 
ProcessPath[2] 
ProcessPath[3] 
ProcessPath[4] 
ProcessPath[5] 
ProcessPath[6] 
ProcessPath[7] 
ProcessPath[8] 
+0

私は答えを感謝します。私はあなたのためにこれをアップヴォートするつもりですが、本当にそれを解決策と考えることはできません。あなたに50ポイントを与えるかもしれません...そうでなければ、それはちょうど消えるでしょう。 – Dakusan