デバッグ ルーチンDebug routines

C ランタイム ライブラリのデバッグ バージョンには、プログラムのデバッグを容易にする多くの診断サービスが用意されており、開発者は次のことが可能になります。The debug version of the C runtime library supplies many diagnostic services that make debugging programs easier and allow developers to:

  • デバッグ中にランタイム関数に直接ステップ インするStep directly into run-time functions during debugging

  • アサーション、エラー、および例外を解決するResolve assertions, errors, and exceptions

  • ヒープ割り当てを追跡し、メモリ リークを防ぐTrace heap allocations and prevent memory leaks

  • ユーザーにデバッグ メッセージを報告するReport debug messages to the user

C ランタイム ライブラリ ルーチンのデバッグ バージョンDebug versions of the C runtime library routines

これらのルーチンを使うには、_DEBUG フラグを定義する必要があります。To use these routines, the _DEBUG flag must be defined. これらのルーチンはすべて、アプリケーションの製品版ビルドでは何も行いません。All of these routines do nothing in a retail build of an application. 新しいデバッグ ルーチンの使い方について詳しくは、「CRT のデバッグ技術」をご覧ください。For more information on how to use the new debug routines, see CRT Debugging Techniques.

ルーチンによって返される値Routine 使用Use
_ASSERT 式を評価し、結果が FALSE の場合はデバッグ レポートを生成しますEvaluate an expression and generates a debug report when the result is FALSE
_ASSERTE に似 _ASSERT ていますが、生成されたレポートに失敗した式が含まれています。Similar to _ASSERT, but includes the failed expression in the generated report
_CrtCheckMemory デバッグ ヒープに割り当てられたメモリ ブロックの整合性を確認しますConfirm the integrity of the memory blocks allocated on the debug heap
_CrtDbgBreak ブレークポイントを設定します。Sets a break point.
_CrtDbgReport, _CrtDbgReportW_CrtDbgReport, _CrtDbgReportW ユーザー メッセージのあるデバッグ レポートを生成し、3 つの宛先にレポートを送信しますGenerate a debug report with a user message and send the report to three possible destinations
_CrtDoForAllClientObjects ヒープ内のすべての _CLIENT_BLOCK 型に対して、アプリケーションによって提供される関数を呼び出しますCall an application-supplied function for all _CLIENT_BLOCK types on the heap
_CrtDumpMemoryLeaks 重大なメモリ リークが発生したときに、デバッグ ヒープ内のすべてのメモリ ブロックをダンプしますDump all of the memory blocks on the debug heap when a significant memory leak has occurred
_CrtIsMemoryBlock 指定されたメモリ ブロックがローカル ヒープ内にあり、有効なデバッグ ヒープ ブロック型識別子が設定されていることを確認しますVerify that a specified memory block is located within the local heap and that it has a valid debug heap block type identifier
_CrtIsValidHeapPointer 指定したポインターがローカル ヒープ内にあることを検証しますVerifies that a specified pointer is in the local heap
_CrtIsValidPointer 指定したメモリ範囲で読み取りおよび書き込みが可能であることを確認しますVerify that a specified memory range is valid for reading and writing
_CrtMemCheckpoint デバッグ ヒープの現在の状態を取得し、アプリケーションが指定した _CrtMemState 構造体に格納しますObtain the current state of the debug heap and store it in an application-supplied _CrtMemState structure
_CrtMemDifference 2 つのメモリ状態の大幅な違いを比較し、結果を返しますCompare two memory states for significant differences and return the results
_CrtMemDumpAllObjectsSince 指定されたチェックポイントの取得以降、またはプログラムの実行開始以降の、ヒープ上のオブジェクトに関する情報をダンプしますDump information about objects on the heap since a specified checkpoint was taken or from the start of program execution
_CrtMemDumpStatistics 指定されたメモリ状態のデバッグ ヘッダー情報をユーザーが判読できる形式でダンプしますDump the debug header information for a specified memory state in a user-readable form
_CrtReportBlockType 特定のデバッグ ヒープ ブロック ポインターに関連付けられたブロックの型および細分化された型を返します。Returns the block type/subtype associated with a given debug heap block pointer.
_CrtSetAllocHook C ランタイム デバッグ メモリ割り当てプロセスにフックして、クライアント定義割り当て関数をインストールしますInstall a client-defined allocation function by hooking it into the C run-time debug memory allocation process
_CrtSetBreakAlloc 指定されたオブジェクト割り当て順序番号にブレークポイントを設定しますSet a breakpoint on a specified object allocation order number
_CrtSetDbgFlag _crtDbgFlag フラグの状態を取得または変更して、デバッグ ヒープ マネージャーの割り当て動作を制御しますRetrieve or modify the state of the _crtDbgFlag flag to control the allocation behavior of the debug heap manager
_CrtSetDumpClient _CLIENT_BLOCK 型のメモリ ブロックをダンプするためにデバッグ ダンプ関数が呼び出されるたびに呼び出されるアプリケーション定義関数をインストールしますInstall an application-defined function that is called every time a debug dump function is called to dump _CLIENT_BLOCK type memory blocks
_CrtSetReportFile _CrtDbgReport による特定の種類のレポートの出力先として使用されるファイルまたはストリームを特定しますIdentify the file or stream to be used as a destination for a specific report type by _CrtDbgReport
_CrtSetReportHook C ランタイム デバッグ レポート プロセスにフックして、クライアント定義レポート関数をインストールしますInstall a client-defined reporting function by hooking it into the C run-time debug reporting process
_CrtSetReportHook2, _CrtSetReportHookW2_CrtSetReportHook2, _CrtSetReportHookW2 C ランタイム デバッグ レポート プロセスにフックして、クライアント定義レポート関数をインストールまたはアンインストールします。Installs or uninstalls a client-defined reporting function by hooking it into the C run-time debug reporting process.
_CrtSetReportMode _CrtDbgReport によって生成される特定の種類のレポートの一般的な出力先を指定しますSpecify the general destination(s) for a specific report type generated by _CrtDbgReport
_RPT[0,1,2,3,4]_RPT[0,1,2,3,4] 書式指定文字列と可変数の引数と共に _CrtDbgReport を呼び出してデバッグ レポートを生成することによって、アプリケーションの進行状況を追跡します。Track the application's progress by generating a debug report by calling _CrtDbgReport with a format string and a variable number of arguments. ソース ファイルと行番号の情報は提供されません。Provides no source file and line number information.
_RPTF[0,1,2,3,4]_RPTF[0,1,2,3,4] _RPTn マクロに似ていますが、レポート要求の発生元となったソース ファイル名と行番号を提供しますSimilar to the _RPTn macros, but provides the source file name and line number where the report request originated
_calloc_dbg デバッグ ヘッダーと上書きバッファー用の追加の領域を持つ、指定された数のメモリ ブロックをヒープに割り当てますAllocate a specified number of memory blocks on the heap with additional space for a debugging header and overwrite buffers
_expand_dbg ブロックの拡張や縮小によって、ヒープ内の指定されたメモリのブロックをサイズ変更しますResize a specified block of memory on the heap by expanding or contracting the block
_free_dbg ヒープ上のメモリのブロックを解放しますFree a block of memory on the heap
_fullpath_dbg, _wfullpath_dbg_fullpath_dbg, _wfullpath_dbg を使用してメモリを割り当てることにより、指定した相対パス名の絶対パス名または完全パス名を作成し _malloc_dbg ます。Create an absolute or full path name for the specified relative path name, using _malloc_dbg to allocate memory.
_getcwd_dbg, _wgetcwd_dbg_getcwd_dbg, _wgetcwd_dbg を使用してメモリを割り当て、現在の作業ディレクトリを取得し _malloc_dbg ます。Get the current working directory, using _malloc_dbg to allocate memory.
_malloc_dbg デバッグ ヘッダーと上書きバッファー用の追加の領域を持つ、メモリ ブロックをヒープに割り当てますAllocate a block of memory on the heap with additional space for a debugging header and overwrite buffers
_msize_dbg ヒープ内のメモリ ブロックのサイズを計算しますCalculate the size of a block of memory on the heap
_realloc_dbg ブロックの移動やサイズ変更によって、ヒープ内の指定されたメモリのブロックを再割り当てしますReallocate a specified block of memory on the heap by moving and/or resizing the block
_strdup_dbg, _wcsdup_dbg_strdup_dbg, _wcsdup_dbg を使用してメモリを割り当て、文字列を複製し _malloc_dbg ます。Duplicates a string, using _malloc_dbg to allocate memory.
_tempnam_dbg, _wtempnam_dbg_tempnam_dbg, _wtempnam_dbg を使用して一時ファイルを作成し、メモリを割り当てるために使用できる名前を生成し _malloc_dbg ます。Generate names you can use to create temporary files, using _malloc_dbg to allocate memory.

ソース コードの形式で使用できない C ランタイム ルーチンC runtime routines that are not available in source code form

デバッガーを使用して、デバッグ プロセス中にほとんどの C ランタイム ルーチンのソース コードをステップ実行することができます。The debugger can be used to step through the source code for most of the C runtime routines during the debugging process. ただし、一部のテクノロジは Microsoft によって所有物と見なされるため、これらのルーチンのサブセットにソース コードが提供されません。However, Microsoft considers some technology to be proprietary and, therefore, does not provide the source code for a subset of these routines. これらのルーチンのほとんどは例外処理または浮動小数点処理のグループに属していますが、他のグループに属しているものもあります。Most of these routines belong to either the exception handling or floating-point processing groups, but a few others are included as well. 次の表は、これらのルーチンの一覧です。The following table lists these routines.

printf および scanf ルーチンの大部分でソース コードを使用できますが、ソース コードが提供されない他のルーチンへの内部呼び出しが行われています。Although source code is available for most of the printf and scanf routines, they make an internal call to another routine for which source code is not provided.

アプリケーションのデバッグ ビルドでは動作が異なるルーチンRoutines that behave differently in a debug build of an application

一部の C ランタイム関数と C++ 演算子は、アプリケーションのデバッグ ビルドから呼び出されたときの動作が異なります。Some C run-time functions and C++ operators behave differently when called from a debug build of an application. (アプリケーションのデバッグビルドは、フラグを定義するか、 _DEBUG C ランタイムライブラリのデバッグバージョンとリンクすることで実行できます)。動作の違いは、通常、デバッグプロセスをサポートするためにルーチンによって提供される追加の機能または情報で構成されます。(Note that a debug build of an application can be done by either defining the _DEBUG flag or by linking with a debug version of the C run-time library.) The behavioral differences usually consist of extra features or information provided by the routine to support the debugging process. 次の表は、これらのルーチンの一覧です。The following table lists these routines.

C abort ルーチンC abort routine

C assert ルーチンC assert routine

C++ delete 演算子C++ delete operator

C++ new 演算子C++ new operator

関連項目See also

カテゴリ別ユニバーサル C ランタイム ルーチンUniversal C runtime routines by category
ランタイム エラー チェックRun-Time Error Checking