I'm trying to develop a php extension for print all functions call like a
backtrace. But when I'm trying to get the current function a segmentation
fault is throw. What is the problem with my code?
My php test code:
function a() {
b();
}
function b() {
c();
}
function c() {
var_dump(hello_world());
}
a();
My extension code:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_hello_world.h"
PHP_FUNCTION(hello_world)
{
zend_execute_data *ptr = NULL;
ptr = EG(current_execute_data); // <----- Segmentation fault (core
dumped)
}
const zend_function_entry hello_world_functions[] = {
PHP_FE(hello_world, NULL)
PHP_FE_END
};
zend_module_entry hello_world_module_entry = {
STANDARD_MODULE_HEADER,
"hello_world",
hello_world_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
PHP_hello_world_VERSION,
STANDARD_MODULE_PROPERTIES
};
#ifdef COMPILE_DL_hello_world
#ifdef ZTS
ZEND_TSRMLS_CACHE_DEFINE()
#endif
ZEND_GET_MODULE(hello_world)
#endif