4.4.2 Cara penggunaan Kelas Debugger
Untuk gunakan kelas debugger, pertama sekali pastikan yang Configure::read('debug') telah diset kepada nilai besar daripada 0.
dump($var)
Dump akan paparkan kandungan variable. Ia akan paparkan semua properties dan methods (jiaka ada) dari variable yang diberikan.
$foo = array(1,2,3); Debugger::dump($foo); //outputs array( 1, 2, 3 ) //simple object $car = new Car(); Debugger::dump($car); //outputs Car:: Car::colour = 'merah' Car::make = 'Toyota' Car::model = 'Camry' Car::mileage = '15000' Car::acclerate() Car::decelerate() Car::stop()
$foo = array(1,2,3);Debugger::dump($foo);//outputsarray(1,2,3)//simple object$car = new Car();Debugger::dump($car);//outputsCar::Car::colour = 'merah'Car::make = 'Toyota'Car::model = 'Camry'Car::mileage = '15000'Car::acclerate()Car::decelerate()Car::stop()
Cipat satu log stack trace log semasa panggilan. Method log() akan paparkan data yang sama dengan apa yang keluarkan Debugger::dump(), tetapi kepada debug.log output buffer. Ingat bahawa anda punya direktori app/tmp (dan kandugannya) mesti boleh ditulis oleh webserver untuk log() bekerja dengan betul.
Kembalikan current stack trace. Setiap barisan trace termasuk juga panggilan method, dan file mana panggilan itu datang.
//dalam PostsController::index() pr( Debugger::trace() ); //outputs PostsController::index() - APP/controllers/downloads_controller.php, line 48 Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 265 Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 237 [main] - APP/webroot/index.php, line 84
//dalam PostsController::index()pr( Debugger::trace() );//outputsPostsController::index() - APP/controllers/downloads_controller.php, line 48Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 265Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 237[main] - APP/webroot/index.php, line 84
Diatas ialah stack trace yang dikeluarkan dengan memanggil Debugger::trace() di dalam controller action. Apabila membaca stack trace dari bawah ke atas ia menunjukkan fungsi yang sedang berjalan(stack frames). Di dalam contoh diatas, index.php panggil Dispatcher::dispatch(), yang kemudiannya memanggil Dispatcher::_invoke(). Method _invoke() pula panggil PostsController::index(). Infomasi ini sangat berguna apabila sedang bekerja dengan operasi recursive atau deep stacks, kearan ia mengenalkan fungsi mana yang sedang berjalan semasa trace().
Ambilkan satu kutipan dari file $path (dimana filepath yang mutlak), terangkan nombor barisan $line dengan $context nombor barisan di sekelilingnya.
pr( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) );
//will output the following.
Array
(
[0] => <code><span style="color: #000000"> * @access public</span></code>
[1] => <code><span style="color: #000000"> */</span></code>
[2] => <code><span style="color: #000000"> function excerpt($file, $line, $context = 2) {</span></code>
[3] => <span class="code-highlight"><code><span style="color: #000000"> $data = $lines = array();</span></code></span>
[4] => <code><span style="color: #000000"> $data = @explode("\n", file_get_contents($file));</span></code>
)
pr( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) );//will output the following.Array([0] => <code><span style="color: #000000"> * @access public</span></code>[1] => <code><span style="color: #000000"> */</span></code>[2] => <code><span style="color: #000000"> function excerpt($file, $line, $context = 2) {</span></code>[3] => <span class="code-highlight"><code><span style="color: #000000"> $data = $lines = array();</span></code></span>[4] => <code><span style="color: #000000"> $data = @explode("\n", file_get_contents($file));</span></code>)
Walaupun method ini digunakan didalam, ia boleh manjadi berguna jika anda ciptakan mesej ralat anda sendiri atau log untuk situasi anda sendiri.
Tukarkan satu variable dari apa-apa jenis kepada string untuk gunakannya didalam output debug. Method ini juga gunakan oleh Debugger untuk komunikasi antara variable dalaman, dan boleh digunakan di dalam Debugger anda sendiri.
Gantikan CakePHP Debugger dengan Error Handler baru.


























