日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php断点调试的几种方法

發(fā)布時間:2023/12/15 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php断点调试的几种方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

斷點調(diào)試是程序開發(fā)過程中的一個必不可少的步驟,一些程序的斷點調(diào)試操作比較簡單,只需在編輯器里標記哪行為斷點,便可得知程序各個環(huán)節(jié)的輸出結(jié)果,例如c#、VB、Delphi等語言。

但是對于PHP程序的調(diào)試來說,就不是這么簡單了。本文將談談php斷點調(diào)試的幾種方法,對于php新手來說,可能更有參考價值。

首先需要說明的是,php程序調(diào)試需要手動編寫部分代碼,目的是斷截程序線程的執(zhí)行,輸出指定環(huán)節(jié)的結(jié)果,就是所謂的斷點調(diào)試。所以,實際上需要討論的問題是采用什么斷點代碼更合適。

die()和exit()

die()和exit()函數(shù)都有終止線程的作用,是php斷點調(diào)試需要使用的最主要的函數(shù),它們也是php程序員使用非常頻繁的函數(shù)。然而兩者又有什么區(qū)別呢?在程序調(diào)試時需要注意什么問題呢?

die()函數(shù)一般與“or”一并使用,寫作“or die()”,經(jīng)??吹竭@樣的語句:

$file = fopen($filename, 'r') or die("抱歉,無法打開: $filename")

or在這里是這樣理解的,因為在PHP中并不區(qū)分數(shù)據(jù)類型,所以$file既可以是int也可以bool,所以這樣的語句不會報錯。但其處理過程可能有些朋友不大明白。其實在大多數(shù)的語言中, bool or bool這樣的語句中,如果前一個值為真后一個值就不會再判斷了。這里也是的,所以如果fopen函數(shù)執(zhí)行正確的話,會返回一個大于0的int值(這其實就是"真"),后面的語句就不會執(zhí)行了。如果fopen函數(shù)執(zhí)行失敗,就會返回false,那么就會判斷后面的表達式是否為真了。結(jié)果執(zhí)行了die()之后,不管返回什么,程序都已經(jīng)停止執(zhí)行了,并且顯示指定的出錯信息,也就達到了調(diào)試的目的。就這樣。

實際上,die和exit是等價的,都是用來終止當前腳本。

php手冊對兩者的解釋如是說:
exit() 函數(shù)輸出一條消息,并退出當前腳本。該函數(shù)是 die() 函數(shù)的別名。
die() 函數(shù)輸出一條消息,并退出當前腳本。該函數(shù)是 exit() 函數(shù)的別名。

實例:
?<?php $site = "http://www.w3school.com.cn/"; fopen($site,"r") or exit("Unable to connect to $site"); ?>
?<?php $site = "http://www.w3school.com.cn/"; fopen($site,"r") or die("Unable to connect to $site"); ?>

var_dump()和print_r()

var_dump -- 打印變量的相關(guān)信息

void var_dump ( mixed expression [, mixed expression [, ...]] )

此函數(shù)顯示關(guān)于一個或多個表達式的結(jié)構(gòu)信息,包括表達式的類型與值。數(shù)組將遞歸展開值,通過縮進顯示其結(jié)構(gòu)。


提示: 為了防止程序直接將結(jié)果輸出到瀏覽器,可以使用輸出控制函數(shù)(output-control functions)來捕獲此函數(shù)的輸出,并把它們保存到一個例如 string 類型的變量中。   
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_dump ($a);
$b = 3.1;
$c = TRUE;
var_dump($b,$c);
?>
var_dump()可以輸出多個變量,如:var_dump($b,$c)

print_r --? 打印關(guān)于變量的易于理解的信息

bool print_r ( mixed expression [, bool return] )

注: 參數(shù) return 是在 PHP 4.3.0 的時候加上的

print_r() 顯示關(guān)于一個變量的易于理解的信息。如果給出的是 string、integer 或 float,將打印變量值本身。如果給出的是 array,將會按照一定格式顯示鍵和元素。object 與數(shù)組類似。

記住,print_r() 將把數(shù)組的指針移到最后邊。使用reset() 可讓指針回到開始處。

<pre>
<?php
$a = array ('a' => 'apple',
'b' => 'banana',
'c' => array ('x','y','z'));
print_r ($a);
?>
</pre>

上邊的代碼將輸出:

<pre> Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ) ) </pre>

如果想捕捉 print_r() 的輸出,可使用 return 參數(shù)。若此參數(shù)設為 TRUE,print_r() 將不打印結(jié)果(此為默認動作),而是返回其輸出。

例子:return 參數(shù)示例

<?php
$b = array ('m' => 'monkey',
'foo' => 'bar',
'x' => array ('x', 'y', 'z'));
$results = print_r ($b, true); //$results 包含了 print_r 的輸出結(jié)果
?>

注: 如果想在 PHP 4.3.0 之前的版本中捕捉 print_r() 的輸出,可使用輸出控制函數(shù)。
注: 在 PHP 4.0.4 之前的版本中,如果給出的 array 或 object 包含了直接或間接指向自身的引用,print_r() 將永遠繼續(xù)下去。print_r($GLOBALS) 就是一個例子,因為 $GLOBALS 自身即是全局變量,其包含了指向自身的引用。

Zend Debugger

環(huán)境:PHP?5.2.5,Zend studio 9,Zend Debugger 5.2.10

需要下載的文件

zend debugger:?http://download.csdn.net/detail/nsrainbow/5958535 zend debugger toolbar (用于Chrome):?http://download.csdn.net/detail/nsrainbow/5958559
zend studio 9 (下載那個 9.0.3):?http://www.zendstudio.net/zend-studio-all-in-one-download/

安裝zend debugger

  • zend debugger下載后解壓開扔到 d:\zend\ZendDebugger.dll
  • 然后添加這段到php.ini最后
    [plain]?view plaincopy
  • [Zend]??
  • zend_extension_ts="d:/zend/ZendDebugger.dll"??
  • zend_debugger.allow_hosts=127.0.0.1/32,127.0.0.1/24??
  • zend_debugger.expose_remotely=allowed_hosts??
  • 重啟Apache
  • 在你的網(wǎng)站文件夾的根目錄下新建一個 a.php ,內(nèi)容寫 <?php phpinfo(); ?>
  • 打開瀏覽器,訪問 a.php如果出現(xiàn)以下文字表示成功
  • 安裝zend debugger toolbar 到 Chrome

  • 打開chrome 把下載好的 ?zend debugger toolbar 解壓出?zend-debugger-extension.crx 文件拖入到 Chrome 的擴展程序里面安裝
  • 如果瀏覽器右上角出現(xiàn)這樣的一個綠色地球表示成功

  • zend studio的安裝過程不講

    如何調(diào)試

    在要調(diào)試的頁面點擊 綠地球,然后選 current page 會立即刷新當前頁面,并且跳到zend studio里面(首先你的zend studio必須是打開著的狀態(tài)),如果是 next page 表示是下一個頁面調(diào)試,就是點擊了提交或者是超鏈接再調(diào)試

    總結(jié)

    以上是生活随笔為你收集整理的php断点调试的几种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。