次の方法で共有


デバッグ ルーチン

C ランタイム ライブラリのデバッグ バージョンには、プログラムのデバッグを容易にする多くの診断サービスが用意されており、開発者は次のことが可能になります。

  • デバッグ中にランタイム関数に直接ステップ インする

  • アサーション、エラー、および例外を解決する

  • ヒープ割り当てを追跡し、メモリ リークを防ぐ

  • ユーザーにデバッグ メッセージを報告する

これらのルーチンを使用するには、_DEBUG フラグを定義する必要があります。 これらのルーチンはすべて、アプリケーションの製品版ビルドでは何も行いません。 新しいデバッグ ルーチンの使用方法の詳細については、「CRT のデバッグ技術」を参照してください。

C ランタイム ライブラリ ルーチンのデバッグ バージョン

ルーチン

使用方法

同等の .NET Framework 関数

_ASSERT

式を評価し、結果が FALSE の場合はデバッグ レポートを生成します

System::Diagnostics::Debug::Assert

_ASSERTE

_ASSERT に似ていますが、生成されるレポートに失敗した式が含まれます

System::Diagnostics::Debug::Assert

_CrtCheckMemory

デバッグ ヒープに割り当てられたメモリ ブロックの整合性を確認します

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

ブレークポイントを設定します。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtDbgReport、_CrtDbgReportW

ユーザー メッセージのあるデバッグ レポートを生成し、3 つの宛先にレポートを送信します

System::Diagnostics::Debug::WriteSystem::Diagnostics::Debug::WritelineSystem::Diagnostics::Debug::WriteIfSystem::Diagnostics::Debug::WriteLineIf

_CrtDoForAllClientObjects

ヒープ内のすべての _CLIENT_BLOCK 型に対して、アプリケーションによって提供される関数を呼び出します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtDumpMemoryLeaks

重大なメモリ リークが発生したときに、デバッグ ヒープ内のすべてのメモリ ブロックをダンプします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtIsMemoryBlock

指定されたメモリ ブロックがローカル ヒープ内にあり、有効なデバッグ ヒープ ブロック型識別子が設定されていることを確認します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtIsValidHeapPointer

指定したポインターがローカル ヒープ内にあることを検証します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtIsValidPointer

指定したメモリ範囲で読み取りおよび書き込みが可能であることを確認します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtMemCheckpoint

デバッグ ヒープの現在の状態を取得し、アプリケーションが指定した _CrtMemState 構造体に格納します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtMemDifference

2 つのメモリ状態の大幅な違いを比較し、結果を返します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtMemDumpAllObjectsSince

指定されたチェックポイントの取得以降、またはプログラムの実行開始以降の、ヒープ上のオブジェクトに関する情報をダンプします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtMemDumpStatistics

指定されたメモリ状態のデバッグ ヘッダー情報をユーザーが判読できる形式でダンプします

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

特定のデバッグ ヒープ ブロック ポインターに関連付けられたブロックの型および細分化された型を返します。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetAllocHook

C ランタイム デバッグ メモリ割り当てプロセスにフックして、クライアント定義割り当て関数をインストールします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetBreakAlloc

指定されたオブジェクト割り当て順序番号にブレークポイントを設定します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetDbgFlag

_crtDbgFlag フラグの状態を取得または変更して、デバッグ ヒープ マネージャーの割り当て動作を制御します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetDumpClient

_CLIENT_BLOCK 型のメモリ ブロックをダンプするためにデバッグ ダンプ関数が呼び出されるたびに呼び出されるアプリケーション定義関数をインストールします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetReportFile

_CrtDbgReport による特定の種類のレポートの出力先として使用されるファイルまたはストリームを特定します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetReportHook

C ランタイム デバッグ レポート プロセスにフックして、クライアント定義レポート関数をインストールします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetReportHook2、_CrtSetReportHookW2

C ランタイム デバッグ レポート プロセスにフックして、クライアント定義レポート関数をインストールまたはアンインストールします。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_CrtSetReportMode

_CrtDbgReport によって生成される特定の種類のレポートの一般的な出力先を指定します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_RPT[0,1,2,3,4]

書式指定文字列と可変数の引数と共に _CrtDbgReport を呼び出してデバッグ レポートを生成することによって、アプリケーションの進行状況を追跡します。 ソース ファイルと行番号の情報は提供されません。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_RPTF[0,1,2,3,4]

_RPTn マクロに似ていますが、レポート要求の発生元となったソース ファイル名と行番号を提供します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_calloc_dbg

デバッグ ヘッダーと上書きバッファー用の追加の領域を持つ、指定された数のメモリ ブロックをヒープに割り当てます

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_expand_dbg

ブロックの拡張や縮小によって、ヒープ内の指定されたメモリのブロックをサイズ変更します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_free_dbg

ヒープ上のメモリのブロックを解放します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_fullpath_dbg、_wfullpath_dbg

指定された相対パス名の絶対または完全パス名を作成します。メモリを割り当てるために、_malloc_dbg が使用されます。

System::IO::File::Create

_getcwd_dbg、_wgetcwd_dbg

現在の作業ディレクトリを取得します。メモリを割り当てるために、_malloc_dbg が使用されます。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_malloc_dbg

デバッグ ヘッダーと上書きバッファー用の追加の領域を持つ、メモリ ブロックをヒープに割り当てます

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_msize_dbg

ヒープ内のメモリ ブロックのサイズを計算します

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_realloc_dbg

ブロックの移動やサイズ変更によって、ヒープ内の指定されたメモリのブロックを再割り当てします

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

_strdup_dbg、_wcsdup_dbg

文字列を複製します。メモリを割り当てるために、_malloc_dbg が使用されます。

System::String::Clone

_tempnam_dbg、_wtempnam_dbg

一時ファイルを作成するために使用できる名前を生成します。メモリを割り当てるために、_malloc_dbg が使用されます。

使用できません。 標準 C 関数を呼び出すには、PInvoke を使用します。 詳細については、「プラットフォーム呼び出しの例」を参照してください。

デバッグ ルーチンを使用して、デバッグ プロセス中にほとんどの他の C ランタイム ルーチンのソース コードをステップ実行することができます。 ただし、一部のテクノロジは Microsoft によって所有物と見なされるため、これらのルーチンにソース コードが提供されません。 これらのルーチンのほとんどは例外処理または浮動小数点処理のグループに属していますが、他のグループに属しているものもあります。 次の表は、これらのルーチンの一覧です。

ソース コードの形式で使用できない C ランタイム ルーチン

acos、acosf、acosl

_fpclass

_nextafter

asin

_fpieee_flt

pow

atan、atan2

_fpreset

printf、_printf_l、wprintf、_wprintf_l, printf_s、_printf_s_l、wprintf_s、_wprintf_s_l*

_cabs

frexp

_scalb

ceil

_hypot

scanf、_scanf_l、wscanf、_wscanf_l, scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l*

_chgsign、_chgsignf、_chgsignl

_isnan

setjmp

_clear87、_clearfp

_j0

sin

_control87、_controlfp、__control87_2

_j1

sinh

copysign、copysignf、copysignl、_copysign、_copysignf、_copysignl

_jn

sqrt

cos

ldexp

_status87、_statusfp

cosh

log

tan

Exp

log10

tanh

fabs

_logb

_y0

_finite

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

*   このルーチンの大部分でソース コードを使用できますが、ソース コードが提供されない他のルーチンへの内部呼び出しが行われています。

一部の C ランタイム関数と C++ 演算子は、アプリケーションのデバッグ ビルドから呼び出されたときの動作が異なります。アプリケーションのデバッグ ビルドは、_DEBUG フラグを定義するか、C ランタイム ライブラリのデバッグ バージョンとリンクすることによって作成できます。動作上の違いは、通常、デバッグ プロセスをサポートするために、機能が追加されたりルーチンによって情報が提供されたりすることです。 次の表は、これらのルーチンの一覧です。

アプリケーションのデバッグ ビルドでは動作が異なるルーチン

C abort ルーチン

C++ delete 演算子

C assert ルーチン

C++ new 演算子

参照

関連項目

カテゴリ別ランタイム ルーチン

ランタイム エラー チェック