Xdebug不能与var_dump()一起使用

时间:2012-08-09 11:06:43

标签: php xdebug var-dump

我不知道为什么,但xdebug没有突出显示var_dump()。但配置似乎没问题。不知道为什么......有什么建议吗?

这是我的phpinfo(); http://pastebin.com/A45dqnWN

加上甚至xdebug_var_dump()都不会突出显示任何内容。它可以工作,但看起来像普通的var_dump()。

5 个答案:

答案 0 :(得分:18)

我在php_info()中找到了“xdebug.default_enable Off Off”选项。我也注意到在EasyPHP的最新版本中,此选项已关闭。所以通过在php.ini中设置这一行来打开它:

xdebug.default_enable=1

接下来只是常见的操作,它完全禁用了HTML输出中的var_dump和其他错误(不是你的情况,但可能对其他人有帮助):

html_errors = On

答案 1 :(得分:6)

对于 Xdebug 3,您需要在 php.ini 中启用开发模式:

class App extends React.Component {
  state = {
     ip: ''
  };
  inputRef = React.createRef()
  componentDidMount(){
     document.addEventListener("keyup", this.keyboardUp);
  }
  componentWillUnmount() {
      document.removeEventListener("keyup", this.keyboardUp);
  }
  keyboardUp = (e) => {
    if (e.key === 'Enter' || e.keyCode === 13) {
        e.preventDefault()
        console.log(e.key)
        this.setState(prev => ({ ip: prev.ip + ' ' })); 
    }else{
        this.setState(prev => ({ ip: prev.ip + e.key })); 
    }
  }
  enterHandler = () => {
      this.setState(prev => ({ ip: prev.ip + '\n' })); 
      this.inputRef.current.focus();
  }
  render() {
     return(
         <div>
           <textarea
            ref={this.inputRef}
            placeholder='Enter here'
            value={this.state.ip}
            />
            <button onClick={this.enterHandler}>Enter</button>
         </div>
     )
  }
}
ReactDOM.render(<App />, document.getElementById("react"));

您也可以按照 here 的说明一次使用多种模式。

答案 2 :(得分:3)

正如@Shadoweb 在 Xdebug v3 中提到的,您希望 debug 允许在断点处停止,并 develop 格式化 var_dump

因此,您可能需要在 php.ini 中包含以下内容:

xdebug.mode=develop,debug

顺便说一句,我还需要 xdebug.start_with_request=yes 来替换重命名的 xdebug.xdebug.remote_enable=1 设置,以便在我的 IDE 中进行分步调试。

答案 3 :(得分:0)

对于php 7.0.2和xdebug 2.4.0

xdebug.default_enable=1

+

html_errors = On

仍然没有着色xdebug_var_dump()输出。

但是这个补丁修复了我的问题。它仅适用于xdebug.c和xdebug_var_dump()。我认为他们犯了一个错误,xdebug_var_dump只有在需要重载函数时才能工作。

@@ -2191,11 +2191,6 @@
    int     i, len;
    char   *val;

-   if (!XG(overload_var_dump)) {
-       XG(orig_var_dump_func)(INTERNAL_FUNCTION_PARAM_PASSTHRU);
-       return;
-   }
-
    argc = ZEND_NUM_ARGS();

 #if PHP_VERSION_ID >= 70000

答案 4 :(得分:0)

在php.ini中关闭xdebug.mode = debug,例如

; xdebug.mode = debug

然后重新启动Apache。