php-src/phpdbg.h

167 lines
5.4 KiB
C
Raw Normal View History

2013-11-10 10:46:18 +00:00
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2013 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
2013-11-17 12:40:51 +00:00
| Authors: Felipe Pena <felipe@php.net> |
2013-11-10 10:46:18 +00:00
| Authors: Joe Watkins <joe.watkins@live.co.uk> |
+----------------------------------------------------------------------+
*/
#ifndef PHPDBG_H
#define PHPDBG_H
2013-11-23 17:56:16 +00:00
#ifdef PHP_WIN32
# define PHPDBG_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
# define PHPDBG_API __attribute__ ((visibility("default")))
#else
# define PHPDBG_API
#endif
2013-11-10 10:46:18 +00:00
#include "php.h"
#include "php_globals.h"
#include "php_variables.h"
2013-11-10 17:45:06 +00:00
#include "php_getopt.h"
2013-11-10 23:30:52 +00:00
#include "zend_builtin_functions.h"
#include "zend_extensions.h"
2013-11-10 10:46:18 +00:00
#include "zend_modules.h"
#include "zend_globals.h"
2013-11-10 23:30:52 +00:00
#include "zend_ini_scanner.h"
2013-11-10 10:46:18 +00:00
#include "zend_stream.h"
#include "SAPI.h"
2013-11-12 12:10:53 +00:00
#include <fcntl.h>
#include <sys/types.h>
#if defined(_WIN32) && !defined(__MINGW32__)
# include <windows.h>
# include "config.w32.h"
# undef strcasecmp
# undef strncasecmp
# define strcasecmp _stricmp
# define strncasecmp _strnicmp
2013-11-12 12:10:53 +00:00
#else
# include "php_config.h"
#endif
#ifndef O_BINARY
# define O_BINARY 0
#endif
2013-11-10 10:46:18 +00:00
#include "php_main.h"
#ifdef ZTS
# include "TSRM.h"
#endif
2013-11-12 04:20:14 +00:00
#ifdef HAVE_LIBREADLINE
# include <readline/readline.h>
# include <readline/history.h>
#endif
#include "phpdbg_cmd.h"
#include "phpdbg_utils.h"
2013-11-10 10:46:18 +00:00
#ifdef ZTS
# define PHPDBG_G(v) TSRMG(phpdbg_globals_id, zend_phpdbg_globals *, v)
#else
# define PHPDBG_G(v) (phpdbg_globals.v)
#endif
2013-11-17 15:39:23 +00:00
#define PHPDBG_NEXT 2
#define PHPDBG_UNTIL 3
#define PHPDBG_FINISH 4
#define PHPDBG_LEAVE 5
2013-11-10 14:28:14 +00:00
2013-11-12 01:51:50 +00:00
/* {{{ tables */
#define PHPDBG_BREAK_FILE 0
#define PHPDBG_BREAK_SYM 1
#define PHPDBG_BREAK_OPLINE 2
#define PHPDBG_BREAK_METHOD 3
2013-11-13 14:22:01 +00:00
#define PHPDBG_BREAK_COND 4
2013-11-23 23:14:16 +00:00
#define PHPDBG_BREAK_OPCODE 5
#define PHPDBG_BREAK_TABLES 6 /* }}} */
2013-11-12 01:51:50 +00:00
/* {{{ flags */
2013-11-14 13:48:13 +00:00
#define PHPDBG_HAS_FILE_BP (1<<1)
#define PHPDBG_HAS_SYM_BP (1<<2)
#define PHPDBG_HAS_OPLINE_BP (1<<3)
#define PHPDBG_HAS_METHOD_BP (1<<4)
#define PHPDBG_HAS_COND_BP (1<<5)
2013-11-23 23:14:16 +00:00
#define PHPDBG_HAS_OPCODE_BP (1<<6)
#define PHPDBG_BP_MASK (PHPDBG_HAS_FILE_BP|PHPDBG_HAS_SYM_BP|PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_OPLINE_BP|PHPDBG_HAS_COND_BP|PHPDBG_HAS_OPCODE_BP)
2013-11-23 23:14:16 +00:00
#define PHPDBG_IN_COND_BP (1<<7)
#define PHPDBG_IN_EVAL (1<<8)
2013-11-23 23:14:16 +00:00
#define PHPDBG_IS_STEPPING (1<<9)
#define PHPDBG_IS_QUIET (1<<10)
#define PHPDBG_IS_QUITTING (1<<11)
#define PHPDBG_IS_COLOURED (1<<12)
#define PHPDBG_IS_CLEANING (1<<13)
2013-11-12 06:03:37 +00:00
2013-11-23 23:14:16 +00:00
#define PHPDBG_IN_UNTIL (1<<14)
#define PHPDBG_IN_FINISH (1<<15)
#define PHPDBG_IN_LEAVE (1<<16)
#define PHPDBG_SEEK_MASK (PHPDBG_IN_UNTIL|PHPDBG_IN_FINISH|PHPDBG_IN_LEAVE)
2013-11-18 01:44:46 +00:00
2013-11-23 23:14:16 +00:00
#define PHPDBG_IS_REGISTERED (1<<17)
#define PHPDBG_IS_STEPONEVAL (1<<18)
#define PHPDBG_IS_INITIALIZING (1<<19)
#define PHPDBG_IS_SIGNALED (1<<20)
#define PHPDBG_IS_INTERACTIVE (1<<21)
#define PHPDBG_IS_BP_ENABLED (1<<22)
2013-11-18 21:59:42 +00:00
2013-11-13 22:18:20 +00:00
#ifndef _WIN32
# define PHPDBG_DEFAULT_FLAGS (PHPDBG_IS_QUIET|PHPDBG_IS_COLOURED|PHPDBG_IS_BP_ENABLED)
2013-11-13 22:18:20 +00:00
#else
# define PHPDBG_DEFAULT_FLAGS (PHPDBG_IS_QUIET|PHPDBG_IS_BP_ENABLED)
2013-11-13 22:18:20 +00:00
#endif /* }}} */
2013-11-12 02:04:54 +00:00
/* {{{ strings */
#define PHPDBG_ISSUES "http://github.com/krakjoe/phpdbg/issues"
2013-11-25 12:19:01 +00:00
#define PHPDBG_VERSION "0.2.0-dev"
#define PHPDBG_INIT_FILENAME ".phpdbginit"
/* }}} */
2013-11-12 02:04:54 +00:00
2013-11-22 16:15:24 +00:00
/* {{{ output descriptors */
#define PHPDBG_STDIN 0
#define PHPDBG_STDOUT 1
#define PHPDBG_STDERR 2
#define PHPDBG_IO_FDS 3 /* }}} */
2013-11-22 16:15:24 +00:00
/* {{{ structs */
2013-11-16 14:34:49 +00:00
ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
HashTable bp[PHPDBG_BREAK_TABLES]; /* break points */
HashTable registered; /* registered */
HashTable seek; /* seek oplines */
phpdbg_frame_t frame; /* frame */
char *exec; /* file to execute */
size_t exec_len; /* size of exec */
zend_op_array *ops; /* op_array */
zval *retval; /* return value */
int bp_count; /* breakpoint count */
int del_bp_num; /* breakpoint to delete */
int vmret; /* return from last opcode handler execution */
FILE *oplog; /* opline log */
FILE *io[PHPDBG_IO_FDS]; /* io */
char *prompt[2]; /* prompt */
const phpdbg_color_t *colors[PHPDBG_COLORS]; /* colors */
phpdbg_command_t *lcmd; /* last command */
phpdbg_param_t lparam; /* last param */
zend_ulong flags; /* phpdbg flags */
ZEND_END_MODULE_GLOBALS(phpdbg) /* }}} */
#endif /* PHPDBG_H */