この記事では主に VIM + の使い方を紹介します。 プログラムに加えて、VIM + XDebug には Eclipse + XDebug に比べて多くの利点があります。これについては、実装原理
DBGp はデバッガーのバックグラウンドとデバッガー間の通信用のプロトコルです。デバッガ インターフェイスは、複数のスクリプト言語をデバッグするために使用されます。デバッグするには、DBGp プロトコルを理解し、DBGp コマンドを送信できる必要があります。これにより、VIM は DBGp リクエストを受け入れ、DBGp コマンドを送信できるようになります。 DBGPavim の名前は、DBGp@VIM に由来しています。ActiveState は、Python/Ruby をデバッグするための DBGp 実装 Komodo リモート デバッグ パッケージを提供します。次のセクションでは、ユーザーがこれを使用できるようにするための VIM との相互運用方法について説明します。 Ruby/nodejs
およびその他のスクリプト言語のデバッグ方法を紹介するメソッドXDebug の設定
インストールXDebug は http://xdebug.org/docs/install を参照できます
- php.ini を編集し、次の 2 行を追加します。
php_value xdebug.remote_autostart 1
-
注: これを追加しない場合、この行は必要ありません。複数の開発者の場合、http://localhost/index.php?XDEBUG_SESSION_START=1 のように、HTTP サーバーにアクセスするには XDEBUG_
SESSION _START を URL に追加する必要があります。異なる VirtualHost を同時にデバッグする必要がある場合は、VirtualHost セクションに次の行を追加できます。 :
zend_extension=/path/to/xdebug.so xdebug.remote_enable=1
php_value xdebug.remote_port 9009
- 最後に、
xdebug.remote_autostart On Off xdebug.remote_enable On On xdebug.remote_handler dbgp dbgp xdebug.remote_host 127.0.0.1 127.0.0.1 xdebug.remote_port 9009 9000
phpinfo.php ファイル内容は次のとおりです:
<?php phpinfo(); ?>
構成 VIM + DBGPavim DBGPavim プラグイン自体は Python で実装されているため、VIM は Python 2.7 をサポートする必要があります。 VIM を開いてコマンド
- phpinfo
- .php を通じて XDebug 設定が正しいかどうかを確認できます。次の行 (主に最初の 2 列) の値を確認できる必要があります:
:version
export path=/path/to/python2.7 / bin:$PATH
./configure --prefix=/opt/vim --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config
make
make install
注: ここでの /usr/lib/python2.7/config は、Python2.7 をインストールした場所によって異なります。 ここまたはここから DBGPavim をダウンロードし、~/.vim ディレクトリに置き、~/.vimrc を編集して次の 2 行を追加します: let g:dbgPavimPort = 9009 let g:dbgPavimBreakAtEntry = 0注: ここの 9009 は前の 9009 と同じです。一貫して、前のセクションで xdebug.remote_port が設定されていない場合は、デフォルトの 9000 が使用されるため、ここで設定する必要はありません。 dbgPavimBreakAtEntry=0 は、VIM にエントリで停止しないように指示するため、ブレークポイントでのみ停止します。
- VIM を再起動し、F5 キーを押して、DBGPavim 構成が正しいかどうかを確認できます。設定が成功すると、VIM ウィンドウの右下隅に次のプロンプト情報が表示されます:
bap-LISN-9009
これは VIM が現在ポート 9009 をリッスンしていることを意味し、bap はブレークポイントでのみ停止することを意味します。プロンプト情報の形式は次のとおりです: - ブレークポイント
ステータス
- デバッガーステータス
LISN 调试器已启动,正处于监听状态。 PEND-n 调试器已捕捉到连接请求,可以按F5进入调试模式了。 CONN VIM正处于调试模式中。 CLSD 调试器已停止。
Apache環境でのPHPのデバッグ
<bae|bap>-<LISN|PENDn|CONN|CLSD>
bae Break At Entry,在入口处停下 bap Break only At breakPoints,只在断点处停下
behavior
ブレークポイントを設定し、F5 を押してデバッガーを開始します。用浏览器访问会调用相应PHP文件的URL,你会看到VIM状态栏里的的提示信息变成:
bap-PEND-1
它告诉你已经有一个连接被拦截,可以按F5开始调试了。
-
按F5进入调试模式,你会看到VIM窗口被分成三部分:左上为源码窗口,右上为变量查看窗口,下方为调用堆栈窗口。
在源码窗口里,把光标定位到某一个变量上面按F12,在变量查看窗口就能看到该变量的值,如果该变量不是简单变量,其成员也会显示出来。如果该变量的某个成员仍不是简单变量,该行后面会出现一个加号,在该行按回车键,该成员的值将被继续展开。如果你想直接查看某个变量的成员变量,可以按v切换到visual模式,选中该成员再按F12,比如$this->login。在堆栈窗口,当你在某一行按回车,将跳到该层。最上面一行是最底层,最下面一行是最顶层。切换调用堆栈的层次,可以帮助你查看各个层次的变量,比如有些全局变量只有在最顶层才能看到。对于源码中没有出现的变量,你可以通过命令:Pg来查看,比如:
g $this->memberShip
你可以开始你的调试了,随时按F1可调出帮助窗口,再次F1就关闭帮助窗口。
调试命令行启动的PHP程序
如果你需要调试命令行启动的PHP程序,也需要保证PHP程序端的设置是正确的。这些设置可以像前面一样在php.ini中设定,也可以通过命令行参数来设定。比如:
php -dxdebug.remote_autostart=1 -dxdebug.remote_port=9009 test.php
如果你的命令行使用的ini和apache中php5_module使用的ini是一样的(通常情况是这样的),你不需要在参数中再来做这些设置。但如果你在ini中的设置是放在某个virtualhost段里,你仍然需要加上这些设置。 你可以通过命令行:
php --ini
来查看你的命令行用的是哪个ini。
接着你可以使用命令:
php -r "phpinfo();"|grep xdebug.remote_
来检查你的XDebug设置。
基本步骤如下:
用VIM打开你需要调试的PHP文件,F10设置断点,F5启动调试监听。
从命令行运行php程序如上。
回到你的VIM窗口,将看到提示信息为PEND-1。
按F5进入调试模式。
DBGPavim提供一个:Dp命令简化命令行程序的调试。只需打开你的PHP文件,输入命令:Dp即可。
调试Python程序
前面说过VIM + DBGPavim作为DBGp协议的服务器,可以与XDebug协同工作,也可以与ActiveState提供的Komodo Python Remote Debugging Client协同工作,实现Python程序的调试,具体步骤如下:
从这里下载安装Komodo Python Remote Debugging Client,把解压后的bin目录加到你的PATH路径中,注意bin目录下的pydbgp文件。
用VIM打开你需要调试的Python文件,F10设置断点,F5启动调试监听。
-
通过pydbgp运行你的Python程序,如
pydbgp -d 127.0.0.1:9009 test.py
-
上面的:Dp命令同样适用于Python调试,下图为Windows 7下用GVIM + pydbgp调试Python的截图。
VIM + DBGPavim相对于Eclipse + XDebug的优势
大多数服务器不会启动XServer,无法在服务器上启动Eclipse。如果在开发人员工作机上启动Eclipse + XDebug,就相当于把DBGp服务器在工作机上运行,你需要设置路径映射,也就是HTTP Server执行的一份代码在服务器上,Eclipse调试时打开的是一份代码,在工作机上,要保证这两份代码能对应上需要映射路径。当程序规模不大时,问题不大,当程序规模大时,会比较麻烦,而且要保证代码的同步,否则会串行。
同时可以遭遇网络防火墙之类的问题。
VIM + DBGPavim也是支持远程调试的,但同样避免不了路径映射的设置,如下:
let g:dbgPavimPathMap = [['D:/works/php','/var/www'],]
注:这里的9009端口就相当于上面为PHP调试时设置的xdebug.remote_port,需要和dbgPavimPort保持一致。
回到你的VIM窗口,将看到提示信息为PEND-1。
按F5进入调试模式。
DBGPavim相对于其他插件的优势
DBGPavim源于VIM早期的一个DBGp插件http://www.vim.org/scripts/script.php?script_id=1152,从这个插件还衍生出其他一些DBGp插件。但DBGPavim重写了作为调试器后台的DBGp服务器,异步监听,使得VIM在监听DBGp的同时不妨碍用户与VIM之间的交互。用户按F5启动调试监听后,可继续使用VIM,随时可按F6停止监听。
DBGPavim会监听所有来自DBGp客户端如XDebug、pydbgp的DBGp连接,不像其它插件只能捕获第一个连接。这对于大规模的WEB程序是必须的,因为现在的一次网页加载通常会触发多个HTTP请求,而我们需要调试的可能来自其中的任何一个。 同时DBGPavim支持只在断点处停下,其它的插件都是在入口处停下,需要程序员一步步跟踪进去。这省了开发人员很大的麻烦,而且避免出错后一次次的重启调试。
相信你也已经发现,DBGPavim可以与Windows下的GVIM一起工作,并且工作的很好。
DBGPavim的详细使用参考
VIM normal模式下
F5 启动调试监听,或者有可调试连接时进入调试模式。 F6 停止调试监听。 F8 切换dbgPavimBreakAtEntry的值,按这个键你可以看到状态栏提示信息在bae和bap之间切换,即是否在PHP程序入口处停下。 F10 在当前行设置或删除断点,在调试模式下同样适用。
调试模式下
F1 打开或关闭帮助窗口 F2 单步进入 F3 单步跳过 F4 单步退出 F5 继续执行直到下一个断点,如果后续没有断点就退出调试模式。 F6 停止调试,这个按键就导致VIM退出调试模式,并且停止调试监听。 F7 调试时执行php语句,按下F7后,用户可在变量查看窗口输入php语句,回车后执行。 F9 最大化某个子窗口,或者重置窗口布局。 F11 查看当前执行环境下的所有变量的值,在不同的堆栈层次,会有不同的结果。 F12 查看光标下的变量的值。
以上功能键为默认配置,你如果习惯多数浏览器的按键设置,可以把下面的代码加入你的.vimrc中:
let g:dbgPavimKeyRun = '<F8>' let g:dbgPavimKeyStepOver = '<F10>' let g:dbgPavimKeyStepInto = '<F11>' let g:dbgPavimKeyStepOut = '<F12>' let g:dbgPavimKeyPropertyGet = '<F3>' let g:dbgPavimKeyContextGet = '<F4>' let g:dbgPavimKeyToggleBp = '<F9>' let g:dbgPavimKeyToggleBae = '<F5>' let g:dbgPavimKeyRelayout = '<F2>'
VIM命令,所有命令只有第一个字母为大写。
:Bl 列出所有断点 :Bp 与F10功能相同 p 这个命令可用于快速调试当前文件,它实现了如下功能: 1. 检查命令行下XDebug/pydbgp的设置是否正确 2. 启动调试器监听 3. 用php/pydbgp执行当前文件 g <longfoo> 查看较长变量的值,比如:Pg $this->savings[3] :Up 调用堆栈往上一级 n 调用堆栈往下一级 :Wc [$foo] 打开/关闭对变量$foo的监视。如果没有参数,就监视当前执行环境下的所有变量。 :We <foo> 打开/关闭对语句foo的监视,即每一单步后自动执行foo语句。 :Wl 列出所有被监视的变量或语句。 :Children <n> 对于数组默认显示前1024个元素,这个命令可以修改。 epth <n> 对于复杂变量,默认只显示下一层成员,这个命令可以设置限制多层。 :Length <n> 对于字符串变量,默认执行显示前1024个字符,这个命令可以设置显示长度。
以上がDBGPavim を使用して Vim で PHP/Python プログラムをデバッグする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonまたはCの選択は、プロジェクトの要件に依存します。1)迅速な開発、データ処理、およびプロトタイプ設計が必要な場合は、Pythonを選択します。 2)高性能、低レイテンシ、および緊密なハードウェアコントロールが必要な場合は、Cを選択します。

毎日2時間のPython学習を投資することで、プログラミングスキルを効果的に改善できます。 1.新しい知識を学ぶ:ドキュメントを読むか、チュートリアルを見る。 2。練習:コードと完全な演習を書きます。 3。レビュー:学んだコンテンツを統合します。 4。プロジェクトの実践:実際のプロジェクトで学んだことを適用します。このような構造化された学習計画は、Pythonを体系的にマスターし、キャリア目標を達成するのに役立ちます。

2時間以内にPythonを効率的に学習する方法は次のとおりです。1。基本的な知識を確認し、Pythonのインストールと基本的な構文に精通していることを確認します。 2。変数、リスト、関数など、Pythonのコア概念を理解します。 3.例を使用して、基本的および高度な使用をマスターします。 4.一般的なエラーとデバッグテクニックを学習します。 5.リストの概念を使用したり、PEP8スタイルガイドに従ったりするなど、パフォーマンスの最適化とベストプラクティスを適用します。

Pythonは初心者やデータサイエンスに適しており、Cはシステムプログラミングとゲーム開発に適しています。 1. Pythonはシンプルで使いやすく、データサイエンスやWeb開発に適しています。 2.Cは、ゲーム開発とシステムプログラミングに適した、高性能と制御を提供します。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Pythonはデータサイエンスと迅速な発展により適していますが、Cは高性能およびシステムプログラミングにより適しています。 1. Python構文は簡潔で学習しやすく、データ処理と科学的コンピューティングに適しています。 2.Cには複雑な構文がありますが、優れたパフォーマンスがあり、ゲーム開発とシステムプログラミングでよく使用されます。

Pythonを学ぶために1日2時間投資することは可能です。 1.新しい知識を学ぶ:リストや辞書など、1時間で新しい概念を学びます。 2。練習と練習:1時間を使用して、小さなプログラムを書くなどのプログラミング演習を実行します。合理的な計画と忍耐力を通じて、Pythonのコアコンセプトを短時間で習得できます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
