web-dev-qa-db-ja.com

xdebugがブレークポイントで停止しない

IDE to debug PHP with Eclipse and xdebug ..をセットアップするのに数時間を費やします。Eclipseで設定したブレークポイントを除いてすべて問題ありません。行をクリックしてブレークポイントを追加すると、デバッガーはnotを停止します。行を追加するとxdebug_break()デバッガーは行で停止します...

構成に問題がある可能性があります。誰か助けてもらえますか?

  • Eclipse:Eclipse PDT 2.2.0 All In Ones Windows 32ビット
  • Xdebug:5.3 VC6(32ビット)
  • PHP:PHPバージョン5.3.3

PHP.ini

[xdebug]
xdebug.remote_enable=1
xdebug.remote_Host=localhost
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/temp"
xdebug.collect_params = 4
xdebug.collect_return = on
xdebug.collect_vars = on

xdebug.show_local_vars = 1
23
RedPaladin

Xdebugがコードのどの部分でも停止しない場合は、xdebug_break()をコードのこの部分に追加します。

20
Freeman

この問題の原因となる問題がいくつかあるようです。私の場合、パスマッピングを設定する必要があると思いました。

下にある設定
rightclick-project->properties->PHP Debug
その後
server->edit->path mapping
間違っていました。

私は正しいものを手動で追加しましたが、Eclipseはそれをすべて自分で行うことができます。マッピングを削除すると機能しました。

13
Nanne

Eclipse PDTとXdebugでも同様の問題がありました。原因は、EclipseがIPv6経由でリッスンしていたが、XdebugがIPv4経由で接続しようとしたことです。

chriki@machine:~$ netstat -an | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN

Xdebug IPv6をサポートしていないようです 、まだです。

行を追加した後

-Djava.net.preferIPv4Stack=true

-vmargsファイルのEclipse.ini行の後、EclipseはIPv4経由でリッスンし始めました。

chriki@machine:~$ netstat -an | grep 9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN

デバッグは問題なく動作するようになりました。

10
Chriki

私は自分で問題を解決しました。

私のphp.iniで、zend_extensionの代わりにxdebugを拡張機能として追加しました。

php.ini

zend_extension=C:\EasyPHP-5.3.3\php\ext\php_xdebug.dll

注:パスは、相対パスではなく、絶対パスでなければなりません。

デバッガは素晴らしい働きをします。おいしい!

7
RedPaladin

私も同じ問題を抱えていました。解決策は、正しいファイルを開き、そこにブレークポイントを追加することです。

ローカルサーバーが仮想Zドライブにあります(WAMPではなくdenwerを使用しています)。 Zドライブは私のD:/ webserverフォルダーを指します。したがって、1)Z:/myproject/script.phpおよび2)D:/webserver/myproject/script.phpとしてファイルを開くことができます

何らかの理由で、デバッガーは開いたZ:/myproject/script.phpファイル内のブレークポイントでのみ停止します。

私のソリューションをテストする方法???次を実行:

  1. デバッグするPHPファイルを開きます
  2. xdebug_break()を任意の行に追加してファイルを保存します
  3. デバッグを実行する

私の場合、デバッグプロセスが開始した後、phpDesigner IDE正しいファイルをIDEで開き、xdebug_break()行で停止します。このため、この新しく開いたファイルでブレークポイントを追加すると動作します。開いたファイルをデバッグに使用してください。

3
Jekis

同じ問題がありました。PDTはデバッグセッションを開始し、スクリプトの最初の行で中断してそこからステップ実行することもできましたが、[再開]をクリックすると、設定した手動のブレークポイントをうまく通過します。私はそれをいじり、他のたくさんの返信を読んだ後、修正しました。

(PHPサーバー構成)で)パスマップをセットアップしようとしていましたが、プロジェクトパスとWebサーバーパスが異なるため、これは何らかの理由で機能しなかったため、 PDTが求めていた場所と一致するようにApache構成のエイリアスを指定しましたが、このパスマップ設定を削除していませんでした。パスマップを削除すると、ブレークポイントが機能し始めました。

おそらく、他の何かが適切に機能していない(パスマップ設定)の症状ですが、ブレークポイントとデバッグはすべて私にとっては機能しています:)

3
r00pert

この問題は、ローカルプロジェクトフォルダーの一部を移動した後で発生しました。ファイルの先頭でxdebuggerを中断させることはできましたが、残りのブレークポイントはスキップされました。

Netbeansを使用している場合は、プロジェクトのURL(プロジェクトのプロパティ->実行構成)が正しい場所を指していることを確認してください。プロジェクトURLが正しいフォルダーを指していると、ブレークポイントは期待どおりに機能し始めます。

2
Kevin

これは約3時間私を怒らせていました、それはうまくいきました。だから、あなたの頭に銃を置く前に、これを試してください。 Eclipseが起動したら、新しいワークスペースを選択し、プロジェクトを再度セットアップします!

これを行った後、ブレークポイントが再びヒットしました!私のブレークポイントは問題なく動作していましたが、突然、動作が停止しました。私は試した:

  1. すべてのブレークポイントを削除する

  2. 清掃プロジェクト

  3. eclipseの再インストール

上記のどれも私のために働いていません!

ところでウィンドウ7を使用しています。

この情報が誰かの命を救うことを願っています!

ところで、ここでは、xdebugとvmwereを使用したcentos 7と、Eclipseを使用したwindow 7クライアントをセットアップするための手順を示します。

vmwereをダウンロードする

ダウンローダーとvmwereのセットアップ:CentOS-7-x86_64-Everything-1511.iso

ファイアウォールを無効にする

systemctl disable firewalld

systemctl stop firewalld

systemctl status firewalld

fTP経由で接続

ipを見つけるifconfig

ifconfig

eno16777736:flags = 4163 mtu 1500

inet 192.168.170.128ネットマスク255.255.255.0ブロードキャスト192.168.170.255

inet6 fe80 :: 20c:29ff:fec4:b8ca prefixlen 64 scopeid 0x20

エーテル00:0c:29:c4:b8:ca txqueuelen 1000(イーサネット)

RXパケット254バイト20919(20.4 KiB)

RXエラー0ドロップ0オーバーラン0フレーム0

TXパケット95バイト10225(9.9 KiB)

TXエラー0ドロップ0オーバーラン0キャリア0コリジョン0

192.168.170.128はIPです

lAMPのセットアップ

rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY *

yum -y install epel-release

yum -yインストールmariadb-server mariadb

systemctl start mariadb.service

systemctl enable mariadb.service

mysql_secure_installation

yum -y httpdをインストール

systemctl start httpd.service

systemctl enable httpd.service

yum -y PHPをインストール

サービスhttpd再起動

yum -yインストールphp-mysql

yum -y install php-Gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring

php-snmp php-soap curl curl-devel

サービスhttpd再起動

yum install phpMyAdmin

windowsでcmdを開き、ipconfigと入力します。

見つける

イーサネットアダプターVMwareネットワークアダプターVMnet8:

Connection-specific DNS Suffix  . : localdomain

Link-local IPv6 Address . . . . . : fe80::94b8:9e5c:c772:3d47%19

IPv4 Address. . . . . . . . . . . : 192.168.170.1 [ this is the widnows ip to allow ]

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway .

/etc/httpd/conf.d/phpMyAdmin.confの変更:

AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip 127.0.0.1

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from 127.0.0.1

  Allow from ::1

</IfModule>

に:

AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip 127.0.0.1

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from 127.0.0.1

  Allow from ::1

</IfModule>

<IfModule mod_authz_core.c>

  # Apache 2.4

  <RequireAny>

    Require ip [ WINDOWS IP TO ALLOW GOES HERE ]

    Require ip ::1

  </RequireAny>

</IfModule>

<IfModule !mod_authz_core.c>

  # Apache 2.2

  Order Deny,Allow

  Deny from All

  Allow from [ WINDOWS IP TO ALLOW GOES HERE ]

  Allow from ::1

</IfModule>

サービスhttpd再起動

$ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie';を変更します。 $ cfg ['Servers'] [$ i] ['auth_type'] = 'http';

サービスhttpd再起動

/ etc/selinux/configの変更

このファイルは、システム上のSELinuxの状態を制御します。

SELINUX =は、次の3つの値のいずれかを取ります。

enforcing-SELinuxセキュリティポリシーが適用されます。

permissive-SELinuxは強制ではなく警告を出力します。

無効-SELinuxポリシーは読み込まれません。

SELINUX = enforcing

SELINUXTYPE =は、次の3つの2つの値のいずれかを取ります。

対象-対象プロセスは保護され、

最小-ターゲットポリシーの変更。選択されたプロセスのみが保護されます。

mls-マルチレベルのセキュリティ保護。

SELINUXTYPE = targeted

このファイルは、システム上のSELinuxの状態を制御します。

SELINUX =は、次の3つの値のいずれかを取ります。

enforcing-SELinuxセキュリティポリシーが適用されます。

permissive-SELinuxは強制ではなく警告を出力します。

無効-SELinuxポリシーは読み込まれません。

SELINUX =無効

SELINUXTYPE =は、次の3つの2つの値のいずれかを取ります。

対象-対象プロセスは保護され、

最小-ターゲットポリシーの変更。選択されたプロセスのみが保護されます。

mls-マルチレベルのセキュリティ保護。

SELINUXTYPE = targeted

centosを再起動する

WINDOWS POINT BROWSER TO: http://192.168.170.128/phpmyadmin 、すべて良いはずです

webサイトを/ var/www/html/[WEBSITE NAME]にコピーします

chmod -R 777 html

etc/httpd /に追加(これにより、パーマリンクが投稿名で機能できるようになります)

オプションFollowSymLinks

AllowOverride All

注文を許可、拒否

すべてから許可

yum install php-devel(pipsizeを許可するため)

phpファイルを作成して:ウェブサイトのルートにコピーして実行し、htlを https://xdebug.org/wizard.php にコピーしてから、分析ソースボタンをクリックします

https://xdebug.org/wizard.php は、次のような手順を示します:

......ダウンロードxdebug-2.4.1.tgz

  • ダウンロードしたファイルをtar -xvzf xdebug-2.4.1.tgzで解凍します

  • 実行:cd xdebug-2.4.1

  • 実行:phpize(phpizeがない場合はFAQを参照してください。

  • 実行:./configure

  • 実行:make

  • 実行:cp modules/xdebug.so/usr/lib64/php/modules

  • /etc/php.iniを編集して行を追加します

  • zend_extension = /usr/lib64/php/modules/xdebug.so

  • xdebug.remote_enable =オン

  • xdebug.remote_Host = 192.168.170.1

  • xdebug.remote_port = 9000

  • xdebug.remote_handler = dbgp

.....サービスhttpd再起動

ファイルを実行すると、XDebugセクションが表示されます。そうであれば、サーバーは準備ができています!

Eclipse Neonをダウンロード

ファイル>ファイルシステムからプロジェクトを開く

完了(そして待つ)

ウィンドウ設定> php>サーバー>新規

  • サーバータブ

    • サーバー名[好きなもの]

    • ベースURL [サーバーのIPまたは名前]

    • ドキュメントルート[すべてのコードがあるハードドライブ上の場所は、サーバー上のものと同じである必要があります]

    デバッガータブ

    • デバッガー:Xdebug

    • ポート:9000

    [サーバーマッピング]タブ([追加]をクリック)

    • サーバー上のパス:[Webサイトへの完全なパス] EG:/ var/www/html/website

    • ワークスペースのパス[追加したプロジェクトを検索:ファイルシステムからプロジェクトを開く]

eclipseメインウィンドウに移動>バグアイコンの横にあるドロップダウン矢印をクリック>構成のデバッグ

  • サーバータブ

    • ファイル:[これは、アプリを開いたときに実行されるローカルプロジェクトの最初のファイルにする必要があります]

    • URL:自動生成をオフにする:チェックを外します

      • URLの最初のテキストボックス:[Webサイトが実行されているサーバーのIPまたは名前]

      • URLの2番目のテキストボックス:[ウェブサイトがルートディレクトリにない場合は、ここにあるディレクトリ]

  • 共通タブ

    • お気に入りメニューに表示

      • デバッグ(チェックボックス)をクリックします。

ウィンドウ>プレスペクティブ>プレスペクティブを開く> php

最初にヒットするphpファイルにブレークポイントを配置します(コード行の垂直スクロールバーをクリックして)

最後にEclipseのデバッグアイコンをクリックすると、ブレークポイントがヒットします(ブレークポイントが含まれているコード行が緑色になります)。


Centos 7をVemwareで世界に開放


VMeereネットワーク設定をブリッジに変更

Cetnosが実行されているvmweare IPへのトラフィックを転送するルールをルーターに追加します

インバウンドルールをwidnowsファイアウォールに追加してhttpを許可する

PS:私は私のガンマーとスパイをチェックする時間がないので、それに対処します

1

簡単な回答:phpスクリプトへのパス上のすべての空白を削除します。

環境:
PDTプラグインバージョン3.7.0には、デバッガーがブレークポイントで停止しないというバグがあります。
そして、スクリプトへのパスに空白が含まれているときに発生します!
修正されましたが、ターゲットバージョンの4.0.0はまだリリースされていないと思います。
私の一日を救ったコメントは https://bugs.Eclipse.org/bugs/show_bug.cgi?id=489646#c7 ( "Comment 7")にあります。

1
Fernando Terra

問題が最も些細なものであることに気付いて以来、私は何日も同じ問題を抱えていました(!)。

構成:

  • (Windows 7ホスト)
  • VirtualBoxマシン上のUbuntu 12.04
  • 手動でインストールされたLAMP
  • Eclipseインディゴ+ PDT
  • php5-xdebug

/ etc/php5/Apache2/php.ini

_[XDebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_output_dir=/tmp
_

デバッガーはブレークポイントで停止せず、xdebug_break();でも停止しませんでした

...デフォルトのApache DocumentRootフォルダーの_/var/www_権限が原因でした

_/home/user/Documents/www_に変更しました。

1
Davide

私はEclipse-php-oxygenを使用して同じ問題を抱えていました問題はEclipseにあります。私はEclipse-php-luna-SR2-win32をインストールしてxdebugをテストしましたが、正常に動作します。

インストール済み:xampp-win32-7.0.30-0-VC14-installer.exe Java 8 Update 171

以下は、php.iniの私の設定です。

[XDebug]
zend_extension = C:\xampp\php\ext\php_xdebug-2.6.0-7.0-vc14.dll
;zend_extension = C:\xampp\php\ext\php_xdebug-2.5.5-7.0-vc14.dll
;zend_extension = "c:\xampp\php\ext\php_xdebug-2.6.0-7.2-vc15.dll"
xdebug.remote_autostart = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_Host = "127.0.0.1"
xdebug.remote_log = "c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "c:\xampp\tmp"
;36000 = 10h
xdebug.remote_cookie_expire_time = 36000

これがお役に立てば幸いです。

Br、ALi

0
abh

Eclipseを使用している場合、特定の起動用に構成されたdebugger([Debugger]タブを参照)がZendである可能性がありますデバッガ。XDebugではありません。デバッグの起動を修正して、再試行してください。これで問題は解決しました。

残念ながらスクリーンショットを投稿することはできません。ただし、Eclipseでは、次の場所に移動できます:Debug Configurations> PHP Web Application> then launch the launch> Debugger Tab> use the Server Debugger drop down to XDebug> hit the Apply button and retry 。

0
George

私は同じ問題を抱えていて、2つのことのどちらかがそれを修正しました...

PHP.iniで重複するzend_extension定義を削除しました

または、おそらくここから最新のxdebugバージョンにアップグレードしただけです http://xdebug.org/download.php

(私はXAMPP v1.7.1に付属するxdebugを実行していました)

これから始めます... xdebug dllのすべての異なるバージョンを試しました...これが機能しない原因は、[式]ウィンドウが開いていたためです...デバッグするときは閉じたままにしてください...ウォッチを一時的に追加し、「ステップ」する前に[式]ウィンドウを閉じます...

偽物...

0
Patrick Steil

簡単に言うと、新しくインストールして構成したxdebugがPhpStormで機能しなかったときのことです。php.iniファイルを更新した後、Apacheを再起動するのを忘れていました。

0
Michael

私はEclipse Oxygenを使っています。かなりの時間を費やした後、Debug Configurationの単純な削除と再作成が役立つことがわかりました。

0
MartinM

私にとって、問題はXdebug v2.7.0beta2-devのphp 7.2のようでしたbetaの部分に注意してください。これはpuphpet.comを使用してインストールされました。私はphp 7.1を試しましたが、問題は消えました。これを見つけるのに何時間もかかった!

0
roelleor

1-php.iniのxdebug設定を確認する
2- Eclipse-> project-> properties-> phpDebug->プロジェクト固有の設定を有効にする

phpDebugger-> configurattion-> portまたはwidndow-> preference-> php-> debug-> installedDebuggers

3-ウィンドウ->設定-> php->

インタープリター->バージョン実行ファイル-> php-win.exeへのパス
point:各デバッグlib(xdebug、zend_debugger、...)に対して、デフォルトのphp実行可能ファイルを設定できます。

4-あなたのアプリケーションサーバーは80と異なるポートで動作します。 widndow-> preference-> php-> PHPサーバー

0
Amin Arab

私もこれを修正しました。拡張の代わりにzend_extensionを使用します。

zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
0
Thiện Trần