変数の値を確認しようとしていますが、デバッガーに「????」の値が表示されます。これはCurrency変数に発生するようですが、他の型には発生しません(Double型と列挙型は問題ありません)。
Delphi 10Update2を使用してWindowsXPSP3でデバッグしています。
私が使用しているプロセスは次のとおりです。
- BDSIDEでプロジェクトをビルドします。
- exeを、サービスが存在すると予想されるディレクトリにコピーします。
- サービスを開始します。ローカルで実行されており、リモートデバッグを試みていません。
- サービスプロセスにアタッチします([実行] | [プロセスにアタッチ])。
- プロセスはブレークポイントで停止するため、アタッチは問題ないようです。
- 変数の値を評価します。
私が試した変数を評価するには:
- 変数名の上にマウスを置きます。通常、これは値を表示しますが、この場合は何も表示されません(つまり、ポップアップは表示されません)。
- 変数名を右クリックすると、[デバッグ]、[評価/変更]に値が表示されます
????
。 - 変数名を右クリックすると、[デバッグ]、[カーソル位置にウォッチを追加]の値が表示されます
????
。 - [ローカル変数]ウィンドウには、の値が表示されます
{
。
Currencyに関連しているようですので、変数の型をCurrencyからDoubleに変更してみましたが、テストを再実行すると、デバッガーが正しい値を示しました。
私が評価しようとしている変数はローカル変数であり、トリッキーなことは何も行われていません。例:
function FooBar: Boolean;
var
foo: Currency;
bar: Double;
begin
foo := 0; // Breakpoint next line, evaluate foo shows "????"
bar := 0; // Breakpoint next line, evaluate bar shows "0"
...
end;
私が関連すると思うプロジェクトオプションは次のとおりです。
Compiler
Code Generation
Optimization = Off
Stack frames = Off
Pentium-safe FDIV = Off
Syntax options
Strict var-strings = On
Complete boolean eval = Off
Extended syntax = On
Typed @ operator = Off
Open parameters = On
Huge strings = On
Assignable typed constants = Off
Runtime Errors
Range Checking = On
I/O Checking = On
Overflow Checking = On
Debugging
Debug Information = On
Local Symbols = On
Debug Info = On
Definitions Only = On
Assertions = On
Use Debug DCUs = Off
Linker
Map file = Detailed
Linker output = Generate DCUs
Exe and DLL options
Include TD32 debug info = On
Include remote debug symbols = On
誰かがこれを引き起こしているものと私がそれを機能させる方法を提案できますか?
編集:Currency変数をラベルにフォーマットするボタンのあるフォームで構成されるテストプログラムを試しました。上記のようにデバッグすると(プロセスへの接続など)、デバッガーは正しい値を示しました。問題がサービスのデバッグに固有のものであるかどうか疑問に思っています...