4

このvimプラグインhttps://github.com/ludovicPelle/vim-xdebug with xdebugを使用しています

Xdebug と vim プラグインは、通常のスクリプトで正常に動作しています。ステップスルーして変数を出力できます。

基本的な単体テストをステップ実行しようとすると、問題なくブレークポイントに到達して停止し、コードをステップ実行できますが、変数の内容を表示できなくなります。

これを非常に基本的な単体テストで機能させようとしています

class testClass extends \PHPUnit_Framework_TestCase
{
  public function testSomething()
  { 
    $a = 5;
    $b = 6;
    $c = 7;
  } 
}

メソッドの最後まで進んで $a の内容を出力しようとすると、次のエラーが発生します。

13 : send =====> property_get -i 13 -d 0 -n a
13 : recv <===== {{{   <?xml version="1.0" encoding="iso-8859-1"?>
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="13" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>
}}}
response status=break xmlns=urn:debugger_protocol_v1 xmlns:xdebug=http://xdebug.org/dbgp/xdebug reason=ok command=property_get transaction_id=13
error code=300 : Can not get property (when the requested property to get did not exist, this is NOT used for an existing but uninitialized property, which just gets the type "uninitialised" (See: PreferredTypeNames)).
    message
        can not get property

コンテキスト全体を出力すると、3 つの変数が次のように表示されます。

$command = 'context_get';
 a                    = /* uninitialized */'';
 b                    = /* uninitialized */'';
 c                    = /* uninitialized */'';

phpunit がテスト クラスのメソッドを実行するときにいくつかの興味深いトリックを実行することを知っているため、デバッガーがメソッド内の変数を返さないのはそのためかもしれません。どんな提案でも大歓迎です、ありがとう。

4

2 に答える 2

0

あなたはこのようなことをする必要があります

class testClass extends \PHPUnit_Framework_TestCase
{
    $a = 0;
    $b = 0;
    $c = 0;

  function dosomething() {
    $a = 5;
    $b = 6;
    $c = 7;
  }
}

または、変数ファイルを含める必要があります

あなたの var.php ファイル

<?

  $a = 0;
  $b = 0;
  $c = 0;

?>

于 2013-01-23T01:34:14.433 に答える
0

問題は、私が使用していた xdebug のバージョンであることが判明しました。明らかに、これは 2.1 で修正された 2.0 の既知の問題です。私がデバッグしている仮想マシンは ubuntu 10.04 LTS です。

このバージョンの Ubuntu がリリースされた時点では、xdebug 2.1 はまだリリース候補でした。最新バージョンの xdebug をコンパイルしたところ、メソッド内の変数を表示できました。

于 2013-01-29T19:22:07.527 に答える