debug幾法(以PHP為例)

2021-09-01 04:43:58 字數 601 閱讀 7328

例如,我先寫一段**:

<?php 

echo5%

0;

這樣一定會出錯的,因為0不能做除數。

頁面上顯示:

php會直接輸出這個除以0的致命錯誤的資訊。

當我們執行乙個很長的過程時出現了邏輯上的錯誤(語法上並沒有錯誤,這種bug比較難解決),一時沒有頭緒,不妨先試著輸出每個過程的執行結果,看看到底哪一步的執行脫離了預想的設計。這是最直接、最低效的除錯方法。

直接輸出的話,可以使用二分法,即在過程的中間進行輸出,看看結果對不對。如果對的話,前面的一定沒錯,後面的一定有錯;如果不對的話,前面的一定有錯,後面的不一定沒錯。這樣一次可以排除一半的**,盡可能地提高效率。

如果我在程式執行過程中新增了對異常的得當處理,會大幅提公升debug的效率。例如:

try

catch

(exceptoin $e

)

日誌可以記錄程式的執行過程。原始的輸入和處理後的輸出是一定要記錄在日誌中的。推薦安裝seaslog擴充套件。

像phpstorm之類的ide一般都會有斷點除錯的外掛程式,安裝之後可以單步執行,並反映每一步的程式狀態。

php併發加鎖以支付為例

本文介紹了php併發加鎖示例,對資料進行加鎖,只容許乙個使用者在乙個時間內進行操作,這個時候就需要用到鎖了,需要的朋友可以了解一下。在工作專案中,會遇到一些php併發訪問去修改乙個資料問題,如果這個資料不加鎖,就會造成資料的錯誤。下面我將分析乙個財務支付鎖的問題。希望對大家有所幫助。1 沒有應用鎖機...

php擴充套件編譯(以memcached為例)

2 解壓並切換進入擴充套件包的目錄 3 使用phpize工具自動生成 configure 4 configure配置擴充套件 5 編譯並安裝擴充套件 下面以編譯php的memcached擴充套件來做乙個 參考 編譯memcached需要libmemcached庫,所以我們先安裝一下libmemcac...

PHP運算元據庫(以MySQL為例)

建立與資料庫與伺服器之間的連線 如果需要在呼叫函式時忽略錯誤或者警告可以在函式名之前加上 資料查詢的查詢語句 1.建立與資料庫與伺服器之間的連線 connection mysqli connect localhost root 0000 users if connection 2.基於剛剛建立的連線...