- Userland API
- SAPI Agnostic - Easily Integrated
- PHP Configuration File Support
- - JIT Super Globals - Set Your Own !!
+ - JIT Super Globals - Set Your Own!!
- Optional readline Support - Comfortable Terminal Operation
- Remote Debugging Support - Bundled Java GUI
- Easy Operation - See Help :)
if (PHPDBG_G(exec)) {
phpdbg_set_breakpoint_file(phpdbg_current_file(TSRMLS_C), param->num TSRMLS_CC);
} else {
- phpdbg_error("Execution context not set !");
+ phpdbg_error("Execution context not set!");
}
} break;
if ((!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE) && !phpdbg_write(phpdbg_get_prompt(TSRMLS_C))) ||
!fgets(buf, PHPDBG_MAX_CMD, PHPDBG_G(io)[PHPDBG_STDIN])) {
/* the user has gone away */
- phpdbg_error("Failed to read console !");
+ phpdbg_error("Failed to read console!");
PHPDBG_G(flags) |= (PHPDBG_IS_QUITTING|PHPDBG_IS_DISCONNECTED);
zend_bailout();
return NULL;
if (!cmd) {
/* the user has gone away */
- phpdbg_error("Failed to read console !");
+ phpdbg_error("Failed to read console!");
PHPDBG_G(flags) |= (PHPDBG_IS_QUITTING|PHPDBG_IS_DISCONNECTED);
zend_bailout();
return NULL;
rc = command->handler(¶m, input TSRMLS_CC);
- /* only set last command when it is worth it ! */
+ /* only set last command when it is worth it! */
if ((rc != FAILURE) &&
!(PHPDBG_G(flags) & PHPDBG_IS_INITIALIZING)) {
PHPDBG_G(lcmd) = (phpdbg_command_t*) command;
} else {
/* this should NEVER happen */
phpdbg_error(
- "No function executed !!");
+ "No function executed!!");
}
return rc;
PHPDBG_HELP(eval) /* {{{ */
{
phpdbg_help_header();
- phpdbg_writeln("Access to eval() allows you to change the environment during execution, careful though !!");
+ phpdbg_writeln("Access to eval() allows you to change the environment during execution, careful though!!");
phpdbg_writeln(EMPTY);
phpdbg_notice("Examples");
phpdbg_writeln("\t%seval $variable", phpdbg_get_prompt(TSRMLS_C));
++break_command;
}
}
- phpdbg_writeln("Note: Conditional breaks are costly, use them sparingly !");
+ phpdbg_writeln("Note: Conditional breaks are costly, use them sparingly!");
phpdbg_help_footer();
return SUCCESS;
} /* }}} */
phpdbg_writeln("\t%sl c myClass", phpdbg_get_prompt(TSRMLS_C));
phpdbg_writeln("\tWill print the source of \"myClass\"");
phpdbg_writeln(EMPTY);
- phpdbg_writeln("Note: before listing functions you must have a populated function table, try compile !!");
+ phpdbg_writeln("Note: before listing functions you must have a populated function table, try compile!!");
phpdbg_writeln(EMPTY);
phpdbg_notice("The parameters enclosed by [] are usually optional, but help avoid ambigious commands");
phpdbg_writeln(EMPTY);
phpdbg_writeln("\t%s- ls /usr/src/php-src", phpdbg_get_prompt(TSRMLS_C));
phpdbg_writeln("\tWill execute ls /usr/src/php-src, displaying the output in the console");
phpdbg_writeln(EMPTY);
- phpdbg_writeln("Note: read only commands please !");
+ phpdbg_writeln("Note: read only commands please!");
phpdbg_help_footer();
return SUCCESS;
} /* }}} */
phpdbg_writeln(" -I\tN/A\t\t\tIgnore default .phpdbginit");
phpdbg_writeln(" -O\t-Omy.oplog\t\tSets oplog output file");
phpdbg_writeln(" -r\tN/A\t\t\tRun execution context");
- phpdbg_writeln(" -E\tN/A\t\t\tEnable step through eval, careful !");
- phpdbg_writeln(" -S\t-Scli\t\t\tOverride SAPI name, careful !");
+ phpdbg_writeln(" -E\tN/A\t\t\tEnable step through eval, careful!");
+ phpdbg_writeln(" -S\t-Scli\t\t\tOverride SAPI name, careful!");
#ifndef _WIN32
phpdbg_writeln(" -l\t-l4000\t\t\tSetup remote console ports");
phpdbg_writeln(" -a\t-a192.168.0.3\t\tSetup remote console bind address");
literal++;
}
} else {
- phpdbg_error("Not executing !");
+ phpdbg_error("Not executing!");
}
return SUCCESS;
phpdbg_writeln("|-------> Real:\t%.3f kB",
(float) (zend_memory_peak_usage(1 TSRMLS_CC)/1024));
} else {
- phpdbg_error("Memory Manager Disabled !");
+ phpdbg_error("Memory Manager Disabled!");
}
return SUCCESS;
} /* }}} */
EG(exception) = NULL;
phpdbg_error(
- "Uncaught %s !",
+ "Uncaught %s!",
Z_OBJCE(exception)->name);
/* call __toString */
PHPDBG_COMMAND(info) /* {{{ */
{
phpdbg_error(
- "No information command selected !");
+ "No information command selected!");
return SUCCESS;
} /* }}} */
PHPDBG_COMMAND(set) /* {{{ */
{
phpdbg_error(
- "No information command selected !");
+ "No information command selected!");
return SUCCESS;
} /* }}} */
if (PHPDBG_G(exec)) {
phpdbg_set_breakpoint_file(phpdbg_current_file(TSRMLS_C), param->num TSRMLS_CC);
} else {
- phpdbg_error("Execution context not set !");
+ phpdbg_error("Execution context not set!");
}
break;
case METHOD_PARAM:
fclose(
PHPDBG_G(oplog));
} else {
- phpdbg_error("Oplog is not enabled !");
+ phpdbg_error("Oplog is not enabled!");
}
} break;
} break;
$dbg = new phpdbg();
var_dump(
- $dbg->isGreat("PHP Rocks !!"));
+ $dbg->isGreat("PHP Rocks!!"));
foreach (test(1,2) as $gen)
continue;
}
/**
- * Obvious !!
+ * Obvious!!
*
*/
public function getResult() {
$dbg = new phpdbg();
-var_dump($dbg->isGreat("PHP Rocks !!"));
+var_dump($dbg->isGreat("PHP Rocks!!"));
?>
```
</Component>
<Component class="javax.swing.JTextField" name="input">
<Properties>
- <Property name="toolTipText" type="java.lang.String" value="Enter phpdbg commands here !"/>
+ <Property name="toolTipText" type="java.lang.String" value="Enter phpdbg commands here!"/>
<Property name="enabled" type="boolean" value="false"/>
</Properties>
<Events>
hostnameLabel.setText("Hostname:");
- input.setToolTipText("Enter phpdbg commands here !");
+ input.setToolTipText("Enter phpdbg commands here!");
input.setEnabled(false);
input.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
if (address != null && address.length() > 0) {
return address;
} else {
- messageBox("Invalid hostname provided !", MessageType.WARN);
+ messageBox("Invalid hostname provided!", MessageType.WARN);
}
return null;
try {
return Integer.parseInt(stdinPort.getText());
} catch (NumberFormatException ex) {
- messageBox("Invalid stdin port provided !", MessageType.WARN);
+ messageBox("Invalid stdin port provided!", MessageType.WARN);
}
return 0;
}
try {
return Integer.parseInt(stdoutPort.getText());
} catch (NumberFormatException ex) {
- messageBox("Invalid stdout port provided !", MessageType.WARN);
+ messageBox("Invalid stdout port provided!", MessageType.WARN);
}
return 0;
}
Introspection doesn't only provide you with names, but the addresses of every opcode in every statement, which you may use to specify with as much precision as
is possible where to break execution.
-**There is a print command for particular methods, useful if a class is very large and your screen is not !**
+**There is a print command for particular methods, useful if a class is very large and your screen is not!**
At this point, break points are set; the next thing to do is issue the run command: