php-src/tutorials/initializing.md
2013-11-22 12:38:40 +00:00

82 lines
2.6 KiB
Markdown

phpdbginit
==========
*Setting up your debugging session automatically*
By default, phpdbg looks for *.phpdbginit* in the current working directory, this location can be overrideen on the command line:
```
phpdbg -imy.phpdbginit
```
An init file should contain one command per line, any phpdbg command is supported during init.
In addition, *.phpdbginit* can contain embedded code, allowing, for example
- the setup of auto completion
- the registration of functions
- the acquisition and pre-compilation of code
- bootstrapping a web application
It is common for C projects (PHP included) to include an init file for the GDB debugger; this would be a clever practice to adopt
for those distributing PHP library code.
The default .phpdbginit
=======================
We distribute the following init file by default, it should be copied to any directory you commonly execute in:
```
##########################################################
# .phpdbginit
#
# Lines starting with # are ignored
# Code must start and end with <: and :> respectively
##########################################################
# Place initialization commands one per line
##########################################################
# exec sapi/phpdbg/test.php
##########################################################
# Embedding code in .phpdbginit
##########################################################
<:
/*
If readline is loaded, you might want to setup completion:
*/
if (function_exists('readline_completion_function')) {
readline_completion_function(function(){
return array_merge(
get_defined_functions()['user'],
array_keys(get_defined_constants())
);
});
}
:>
##########################################################
# Now carry on initializing phpdbg ...
##########################################################
# R my_debugging_function
##########################################################
# PHP has many functions that might be useful
# ... you choose ...
##########################################################
# R touch
# R unlink
# R scandir
# R glob
##########################################################
# Remember: *you have access to the shell*
##########################################################
# The output of registered function calls is not,
# by default, very pretty (unless you implement
# and register a new implementation for phpdbg)
# The output of shell commands will usually be more
# readable on the console
##########################################################
# TLDR; if you have a good shell, use it ...
##########################################################
```