0

数百行のコードのどこかでドメイン エラーが発生しています。原因となっている行を特定したいと考えています。私が最初に考えたのは、データ ブレークポイントを on に設定することでした_errno()(errnoマクロが に展開されるため、errno エラー コードが格納されているアドレスを指定する必要がある*_errno()と考えました)。_errno()ただし、Visual Studio は識別子_errnoが未定義であると文句を言います。

Visual Studio で errno が設定されている場合にブレークする正しい方法は何ですか?

4

1 に答える 1

2

変数ではなく関数です。intへのポインターを返します。データブレークポイントを設定するには、そのポインター値を知る必要があります。

これを行う最善の方法は、main() の先頭に次のコード行を記述することです。

 errno = 0;

そして、次の行にブレークポイントを設定します。逆アセンブリ ウィンドウに切り替えます。通常は次のようになります。

011013C0  call        dword ptr [__imp___errno (11082BCh)] 
011013C6  cmp         esi,esp 
011013C8  call        @ILT+320(__RTC_CheckEsp) (1101145h) 
011013CD  mov         dword ptr [eax],0 

したがって、私の場合、EAX レジスタには、データ ブレークポイントを設定するためのアドレスがあります。コードが似ているかどうかを一度確認してください。次のように、ダイアログで @eax 疑似変数を使用します。

ここに画像の説明を入力

于 2013-07-15T18:30:31.573 に答える