デバッグ ルーチン
C ランタイム ライブラリのデバッグ バージョンはデバッグのプログラムを見つけやすくなり開発者ができるさまざまな診断サービスが用意されています :
デバッグ中のランタイム関数にステップ イン直接
解決アサーション エラーおよび例外
ヒープ割り当てをトレースしメモリ リークを防ぐのに役立ちます。
ユーザーへのレポートのデバッグ メッセージ
これらのルーチンを使用するには_DEBUG フラグを定義する必要があります。これらのルーチンはすべてアプリケーションのリリース ビルドの処理は実行されません。新しいデバッグ ルーチンを使用する方法の詳細に CRT デバッグ技術 を参照してください。
C ランタイム ライブラリ ルーチンのデバッグ バージョン
ルーチン |
[条件] |
同等の .NET Framework 関数 |
---|---|---|
結果が false の場合式が評価されデバッグ レポートが生成されます。 |
||
_ASSERT に似ていますが生成されたレポートに失敗した式が含まれています。 |
||
デバッグ ヒープに割り当てられたメモリ ブロックの整合性を確認します。 |
||
ブレークポイントを設定します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ユーザー定義メッセージを持つデバッグ レポートを生成して3 とおりのターゲットにレポートを送信します。 |
System:: Diagnostics:: デバッグ :: 書き込みSystem:: Diagnostics:: デバッグ :: WritelineSystem:: Diagnostics:: デバッグ :: WriteIfSystem:: Diagnostics:: デバッグ :: WriteLineIf |
|
ヒープの _CLIENT_BLOCK のすべての種類のアプリケーション指定された関数を呼び出します |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
重要なメモリ リークが発生した場合はデバッグ ヒープ上にメモリ ブロックをすべてダンプします。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
指定されたメモリ ブロックがローカル ヒープ内にあり有効なデバッグ ヒープ ブロック型識別子が設定されていることを確認します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
指定したポインターがローカル ヒープ内にあることを確認します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
指定したメモリの範囲を読み取りと書き込みで有効であることを確認します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
デバッグ ヒープの現在の状態を取得 _CrtMemStateアプリケーションが指定した構造体に格納します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
大きな違いの 2 人のメモリ状態を比較し結果を返します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
チェックポイントを指定またはプログラムの実行の開始時点から取得されたのでヒープのオブジェクトに関する情報をダンプします。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ユーザー読み取り可能な形式で指定したメモリ状態のデバッグ ヘッダー情報をダンプできます。 |
||
特定のデバッグ ヒープ ブロックのポインターに関連付けられたブロック型とサブタイプを返します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
C ランタイムのデバッグ メモリの割り当てのプロセスにフックすることによりクライアント定義された割り当て関数のインストール |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
指定されたオブジェクトの割り当て順序番号にブレークポイントを設定します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
_crtDbgFlag のフラグの状態を取得したりデバッグ ヒープ マネージャーの動作を制御するには変更します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
_CLIENT_BLOCK の型のメモリ ブロックをダンプするデバッグのダンプ関数が呼び出されるたびに呼び出すアプリケーション定義の関数を組み込む |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ファイルを識別するか_CrtDbgReport によって特定のレポートの種類がターゲットとして使用するストリーム。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
C ランタイムのデバッグ レポートのプロセスにフックすることによりクライアント定義のレポート関数を組み込む |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
インストールまたはアンマネージ インストール C ランタイムのデバッグ レポートのプロセスにフックすることによりクライアント定義のレポート関数。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
_CrtDbgReport によって生成される特定のレポートの種類に汎用コピー先を指定します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
引数の書式指定文字列と可変数の _CrtDbgReport を呼び出してデバッグ レポートを生成することでアプリケーションの進行状況を追跡します。ソース ファイルと行番号情報を提供しません。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
_RPTn マクロと同様ですがレポートの要求が発生したソース ファイル名と行番号が表示されます |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
デバッグのヘッダー用の領域を使用してヒープ メモリ ブロックの割り当て指定した数のバッファーを上書きします。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ブロックを配置または表示するにはヒープ上のメモリの指定されたブロックのサイズを変更します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ヒープからメモリ ブロックを解放します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
メモリを割り当てるために _malloc_dbg を使用して指定した相対パス名の絶対位置または完全パス名を作成します。 |
||
メモリを割り当てるために _malloc_dbg を使用して現在の作業ディレクトリを取得します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
デバッグのヘッダー用の領域を使用してヒープ上のメモリのブロックを割り当てバッファーを上書きします。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ヒープ上のメモリのブロックのサイズを計算します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
ブロックを移動することやサイズを変更することによってヒープ メモリの指定されたブロックを再割り当てします。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
_malloc_dbg を使用して文字列をメモリを割り当てるために実行します。 |
||
一時ファイルをメモリを割り当てるために作成するために使用できる _malloc_dbg を使用して名前を生成します。 |
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
デバッグ プロセス中に別の C のランタイム ルーチンのほとんどのソース・コードをステップ実行のデバッグにルーチンを使用できます。ただしMicrosoft ではテクノロジがであると見なされるためこれらのルーチンにソース・コードを提供しません。これらのルーチンのほとんどはグループを処理するか小数点例外処理に属しますが必要な他も含まれます。次の表はこれらのルーチンを紹介します。
ソース・コードのフォームで使用できない C のランタイム ルーチン
printf、_printf_l、wprintf、_wprintf_l, printf_s、_printf_s_l、wprintf_s、_wprintf_s_l* |
||
scanf、_scanf_l、wscanf、_wscanf_l, scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l* |
||
|
* ソース・コードはこのルーチンのほとんどに使用できますがソース・コードが提供されていない別のルーチンに内部呼び出します。
呼び出された場合C のランタイム関数と C++ の演算子はアプリケーションのデバッグ ビルドと異なる動作します。(アプリケーションのデバッグ ビルドを _DEBUG フラグを定義するかまたは C ランタイム ライブラリのデバッグ バージョンとリンクに配置することです)。動作の違いは通常デバッグ プロセスをサポートするルーチンによって提供される追加の機能や情報で構成されます。次の表はこれらのルーチンを紹介します。
アプリケーションのデバッグ ビルドで異なる動作をするルーチン
C の 中止 ルーチン |
C++ の演算子 削除 |
C の Assert ルーチン |
C++ の演算子 新規作成 |
上の表で C++ の演算子のデバッグ バージョンを使用する方法の詳細についてはC++ でのデバッグ ヒープを使用する を参照してください。