CRT関数が0xc0000417(STATUS_INVALID_CRUNTIME_PARAMETER)でクラッシュする無効なパラメータを取得したときに、_set_invalid_parameter_handlerを使用してプログラムのデフォルト動作をオーバーライドしています。_invalid_parameterはリリースビルドで有用な情報を得ません
これは私のハンドラである:
void my_invalid_parameter_handler(
const wchar_t * expression,
const wchar_t * function,
const wchar_t * file,
unsigned int line,
uintptr_t pReserved
)
{
Log(L"Invalid parameter detected");
Log(L"expression= %s", expression);
Log(L"function= %s", function);
Log(L"file= %s", file);
Log(L"line= %d", line);
Log(L"pReserved= %p", pReserved);
}
は私が情報をログに記録し、エラー報告を送信します。デバッグビルドでは、パラメータを使って便利な情報が得られますが、リリースビルドではすべてのパラメータがNULLになっていますが、これはあまり役に立ちません。リリースビルドにも役立つ情報を追加する方法はありますか?
'CRTライブラリのデバッグバージョンが使用されていない限り、パラメータの値はすべてNULLになります。 ' –
ありがとうございます。さて、私の質問に答えます。あなたが答えとして投稿するなら、私は正しい答えとしてそれを選択します。 – sashoalm