forked from xdebug/xdebug
/
xdebug_handler_gdb.h
95 lines (80 loc) · 3.25 KB
/
xdebug_handler_gdb.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
+----------------------------------------------------------------------+
| PHP Version 4 |
+----------------------------------------------------------------------+
| Copyright (c) 2002, 2003 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_02.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. |
+----------------------------------------------------------------------+
| Authors: Derick Rethans <d.rethans@jdimedia.nl> |
+----------------------------------------------------------------------+
*/
#ifndef __HAVE_XDEBUG_HANDLER_GDB_H__
#define __HAVE_XDEBUG_HANDLER_GDB_H__
#include "xdebug_handlers.h"
#include <string.h>
#define XDEBUG_INIT 1
#define XDEBUG_BREAKPOINT 2
#define XDEBUG_RUN 4
#define XDEBUG_RUNTIME 8
#define XDEBUG_DATA 16
#define XDEBUG_STATUS 32
#define XDEBUG_ALL 63
typedef struct xdebug_arg {
int c;
char **args;
} xdebug_arg;
#define xdebug_arg_init(arg) { \
arg->args = NULL; \
arg->c = 0; \
}
#define xdebug_arg_dtor(arg) { \
int i; \
for (i = 0; i < arg->c; i++) { \
xdfree(arg->args[i]); \
} \
if (arg->args) { \
xdfree(arg->args); \
} \
xdfree(arg); \
}
typedef struct xdebug_cmd {
char *name;
int args;
char *description;
char *(*handler)(xdebug_con *context, xdebug_arg *args);
int show;
char *help;
} xdebug_cmd;
#define XDEBUG_E 1024
#define XDEBUG_E_INVALID_FORMAT XDEBUG_E | 1
#define XDEBUG_E_BREAKPOINT_NOT_SET XDEBUG_E | 2
#define XDEBUG_E_BREAKPOINT_NOT_REMOVED XDEBUG_E | 3
#define XDEBUG_E_EVAL XDEBUG_E | 4
#define XDEBUG_E_TOO_MANY_ARGUMENTS XDEBUG_E | 5
#define XDEBUG_E_NO_INFO XDEBUG_E | 6
#define XDEBUG_E_UNDEFINED_COMMAND XDEBUG_E | 7
#define XDEBUG_E_SYMBOL_NOT_FOUND XDEBUG_E | 8
#define XDEBUG_E_NOT_USER_DEFINED XDEBUG_E | 9
#define XDEBUG_RESPONSE_NORMAL 0
#define XDEBUG_RESPONSE_XML 1
typedef struct xdebug_gdb_options {
int response_format;
} xdebug_gdb_options;
int xdebug_gdb_init(xdebug_con *context, int mode);
int xdebug_gdb_deinit(xdebug_con *context);
int xdebug_gdb_error(xdebug_con *context, int type, char *message, const char *location, const uint line, xdebug_llist *stack);
int xdebug_gdb_breakpoint(xdebug_con *context, xdebug_llist *stack, char *file, int lineno, int type);
#define xdebug_handler_gdb { \
xdebug_gdb_init, \
xdebug_gdb_deinit, \
xdebug_gdb_error, \
xdebug_gdb_breakpoint \
}
#endif