6

Delphiでデバッグする場合、例外によって障害の原因となっているコード行が正しく通知されますが、ローカル変数にアクセスできません。これはデバッガーの制限ですか?それとも私は何か簡単なものが欠けていますか?現在、障害が発生する前に、すべてのローカル変数を回線上のグローバルにミラーリングし、プログラムを再コンパイルして、同じ例外を繰り返すことができるようにする必要があります。

例えば

MyArray[I]:=Foo(...); 

が範囲外の場合I(境界チェックがオンになっている場合)I、前の行のグローバルスコープのデバッグ変数にミラーリングしない限り、変数が何であるかを確認できません。

または私が持っている場合

MyInteger:=Trunc(MyFloat), 

そして、それが何であるか私にはわかりませんMyFloat6.1E+17

4

2 に答える 2

7

コールスタックウィンドウで適切な行を選択すると、ローカル変数の値を確認できます。例外が発生する前は、通常1行または2行です。

これが実装されたときの正確なバージョンは手元にありませんが、間違いなく新しいバージョンの1つです。

于 2012-10-14T21:38:50.560 に答える
1

「問題」は、私が知る限り、コンパイラによって引き起こされます。コンパイラの最適化機能はガベージコレクタのように機能し、使用されなくなったときに関数内で宣言された変数を解放します。

この問題を解決するには、例外ハンドラーを作成し、例外キャッチブロック内で変数を偽造して使用します。

于 2012-10-15T07:21:44.713 に答える