Some reminiscences, some memories

Just another boring day
« Travian用 js 插件
VirtuaWin – 虚拟桌面管理器 »

3

Mar

在 Windows 下使用 Notepad++ 和 xdebug 调试 php 脚本

mikespook 

介绍

Notepad++ 是开放源代码的可替代记事本的编辑器。它运行于 MS Windows 环境,支持多种编程语言。可以浏览 http://notepad-plus.sourceforge.net/ 了解更多相关信息。

Xdebug 是 php 的一个扩展,它提供了对 php 脚本进行除错、追踪、检查的各种功能。可以浏览 http://xdebug.org 了解更多相关信息。

下载

Notepad++ 下载地址:http://nchc.dl.sourceforge.net/sourceforge/notepad-plus/npp.4.7.5.Installer.exe

Notepad++ 插件 DBGP plugin:http://nchc.dl.sourceforge.net/sourceforge/npp-plugins/DBGpPlugin_0_7b_fix_dll.zip

xdebug:http://xdebug.org/link.php?url=xdebug202-52-win

* xdebug 的版本需要匹配环境使用的 PHP 版本,这里提供的链接为 PHP 5.2.1-5.2.7 使用 xdebug。

xdebug helper for firefox:https://addons.mozilla.org/zh-CN/firefox/addon/3960

安装

Notepad++ 的安装方式如同大多数 Windows 下软件一样是非常简单的。只需按照屏幕提示设置并点击“下一步”,最后“完成”即可安装成功。

为了让 Notepad++ 和 xdebug 协同工作,需要安装 DBGP plugin。下载后只需解压缩至 Notepad++ 安装目录中的 plugins 目录即可,如:C:\Program Files\Notepad++\plugins。

xdebug 的安装请参考:http://www.mikespook.com/index.php/archives/34。需要说明的是,如果同时安装有 xcache 一定要先加载 xcache,再加载 xdebug。否则会造成 php 运行异常。

使用

首先,将编写分别使用递归方式和使用循环方式计算100的阶乘的两个函数,如下:

<?php

function f1($x)

// 循环计算 $x 的阶乘

{

for($i = $x – 1; $i > 1; $i–)

{

$x *= $i;

}

return $x;

}

function f2($x)

// 递归计算 $x 的阶乘

{

if($x == 1)

{

return $x;

}

else

{

$y = $x – 1;

return $x * f2($y);

}

}

echo ‘f1: ‘ . f1(10);

echo ‘<br />’;

echo ‘f2: ‘ . f2(10);

将该文件放入可通过 web 访问并由 php 正确解析的目录,访问结果如图:

windows_notepad_xdebug_0.jpg

使用 Notepad++ 打开这个文件。通常在文件上点击鼠标右键(或者左键,如果你跟我一个方向的话),选择“Edit with Notepad++”,如图:

windows_notepad_xdebug_1.jpg
如果你没有这项,或者无法使用 Notepad++,请检查是否正确的安装了 Notepad++。打开后的界面如图:

windows_notepad_xdebug_2.jpg

在 Notepad++ 的菜单“插件”中选择“DBGp”并点击“Debug”:

windows_notepad_xdebug_3.jpg

会在编辑器下半部分打开调试窗口:

windows_notepad_xdebug_4.jpg

此时就已经打开了编辑器端的调试功能。

使用XDEBUG_SESSION_START=1参数访问刚才编写的文件,如:http://127.0.0.1/foobar.php?XDEBUG_SESSION_START=1

此时会发现 Notepad++ 窗口会闪烁一下,这说明 Notepad++ 的 DBGp 插件已经生效。将光标放置到需要设置断点的位置,并点击有红点的按钮,光标所在行前会显示一个红点,表示断点行,如图:

windows_notepad_xdebug_5.jpg

此时访问/foobar.php?XDEBUG_SESSION_START=1,会发现浏览器无法正确显示出页面。其实这是由于 Notepad++ 已经将 PHP 运行中断在断点处,等待调试:

windows_notepad_xdebug_6.jpg

windows_notepad_xdebug_7.jpg

补充一下的是:如果是用 firefox 访问页面,并且安装了 xdebug helper 的话。开启 xdebug helper 即可直接调试。 不需要再添加 XDEBUG_SESSION_START 参数。

之前无法使用的按钮,现在也可点击,可实现“Step Into”、“Step Over”、“Step Out”、“Run to cursor”、“Run”操作:

windows_notepad_xdebug_8.jpg

打开 Local Context 标签,点击鼠标右键选择“Refresh”,可以显示当前所有局部变量:

windows_notepad_xdebug_9.jpg

而对 Global Context 标签做同样的操作将显示所有全局变量:

windows_notepad_xdebug_10.jpg

Stack 标签可以显示栈的使用情况,这对于调试函数调用很有帮助。例如本例中的递归方式计算阶乘:

windows_notepad_xdebug_11.jpg

调试完毕或后可以将光标放置在断点处,再次点击断点按钮取消断点。然后点击“Run”按钮或按 F9 继续程序的执行。也可直接点击“Trun OFF” 按钮关闭调试功能。

特别要提一下的是Eval 按钮windows_notepad_xdebug_12.jpg的功能。这个按钮可以动态改变某个变量的内容,以方便调试:

windows_notepad_xdebug_13.jpg

windows_notepad_xdebug_14.jpg

windows_notepad_xdebug_15.jpg

至此,Notepad++ 配合 xdebug 对 PHP 进行调试的基本功能就介绍完了。调试是非常讲究技巧和经验的,真正发挥调试的威力,还要大家在实际使用中总结和提高。在我有时间的时候,我会继续 VIM 配合 xdebug 的介绍,同时录制一些屏幕录像给大家参考。

在 Windows 下使用 Notepad++ 和 xdebug 调试 php 脚本 PDF 版本

This entry was posted on Monday, March 3rd, 2008 at 09:07 and is filed under PHP. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

4 Responses to “ 在 Windows 下使用 Notepad++ 和 xdebug 调试 php 脚本 ”

  1. # 1 巫云 Says:
    March 17th, 2008 at 09:48

    您好,请教一下。能详细的讲讲xdebug和DBGP的config怎么配置的吗?我总是弄不通,提示说:unable to map filename:… …

  2. # 2 mikespook Says:
    March 18th, 2008 at 02:15

    xdebug 的安装请参考:http://www.mikespook.com/index.php/archives/34,復制我的 config 內容,修改路徑就可以了。不過我還是推薦仔細閱讀 http://xdebug.org/docs/install。關于你的錯誤,可能是路徑或者權限造成的。

  3. # 3 網站製作學習誌 » [Web] 連結分享 Says:
    November 25th, 2009 at 10:44

    [...] Some reminiscences, some memories » 在 Windows 下使用 Notepad++ 和 xdebug 调试 php 脚本 [...]

  4. # 4 tengdengming Says:
    January 26th, 2010 at 14:33

    巫云,我也遇到了同样的问题,不过解决了。
    你需要在DBGP的Config中配置一下mapping选项。
    Remote Server Ip :127.0.0.1
    IDE Key:xdebug
    Remote Path:E:\PHP\Dev\
    Local Path:E:\PHP\Dev\
    E:\PHP\Dev\按照自己的php文件所在进行修改。

Leave a Reply

Trackback URI | Comments RSS

 

September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  

Recent Comments

  • cbf107 on 我们精通精通
  • mikespook on 我们精通精通
  • == on 我们精通精通
  • 老熊 on 关于Web编程异步模型的白日梦
  • Some reminiscences, some memories » Blog Archive » Akihabara 指南目录 on Akihabara 指南

Tags

乱码 协程 地震 备案 安装 广州 异步 性能 我爱发明 扯淡 招聘 游戏 漏洞 翻译 豆瓣 39.com Adobe akihabara config countdown Demo Flash game engine golang google html5 issue linux Micromedia MongoDB mysql NetBeans nginx NoSQL oracle PHP phpunit Python trac ubuntu xdebug xml xubuntu yield Zend Framework

Blogroll

  • Blog on 27th Floor
  • DBA notes
  • Tim[后端技术]
  • 唐海燕
  • 小众音乐
  • 抚琴居
  • 某人的栖息地
  • 番茄’s Blog
  • 網站製作學習誌
  • 纸老虎传媒

Old friends

  • cbf107

Only

  • 媚惑桃花

OurPNP

  • Biaoest:标的最高级
  • flexsns-官方博客
  • PNP University
  • PNP街坊
  • smallfish 鱼哥的窝子
  • 冰山日志
  • 墙外的光神V5
  • 夜雨's Blog
  • 小冬kobe
  • 小路的奇异世界
  • 广州萌芽工作室
  • 老甘blog
  • 赖勇浩的编程私伙局

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Powered by WordPress
mikespook.com 粤ICP备09065095号