[日常文章]xdebug的原理和运行机制

3,557 阅读2分钟

xDebug

一、 背景介绍

Xdebug 工具我们既熟悉,又陌生,熟悉是因为,我们只需要简单的配置就可以使用了。 陌生是他怎么通信的,以及在后续怎么在不同环境,如linux环境,docker环境怎么调试的,并且怎么跟docker环境进行整合的。

1.1 目标: 了解xdebug的原理和运行机制

1.2 目的:解决windows,mac,docker等不同环境的xdebug的使用问题

二、 Xdebug的原理

2.0 xdebug的相关资料

  • XDEBUG 从入门到精通,查看

  • Xdebug原理学习及其攻击面复现,查看

  • xdebug,How Xdebug Changed My Life:xdebug的使用和配置,查看

    PhpStorm Xdebug远程调试环境搭建原理分析及问题排查,[查看]([xxlegend.com/2017/05/23/…](xxlegend.com/2017/05/23/… Xdebug远程调试环境搭建原理分析及问题排查/))

    Xdebug: 协助调试与开发 ,查看

2.1 xdebug 怎么跟PHP进行通信的?

  1. 查看监听的端口号是否建立连接?

![image-20190713164029286](/Users/Macx/Library/Application Support/typora-user-images/image-20190713164029286.png)

  1. 那从用户发起请求到,到IDE的整个流程图如下:

  2. 使用wireshark抓取xdebug和php的通信的数据包

    使用Wireshark抓取PHP Server [PSH,ACK]的消息 (过滤条件:tcp.port==9000 && tcp.flags.push == 1)

2.2 xdebug 的整体流程是怎么样的?

2.3 phpstorm 是怎么跟xdebug进行通信/集成的?

  • 参考文档:Xdebug远程调试原理与实践,查看

2.4 xdebug 怎么来支持docker和linux的环境的调试操作

  • Docker 下的PHPSTORM+XDEBUG ,查看

2.5 xdebug的DBGB协议是怎么回事? 查看

2.6 xdebug 常用的交互界面

  • Xdebug 提供的默认的dbgb界面。 详见:dbgp/dbgpclient.php

  • PHPStorm 的调试界面

2.7 可以与PHPUNIT的整合,进行单元测试环境的调试

三、 其他语言的调试工具

基本上每个语言都有其调试的工具,那其他的语言的调试工具和原理是什么,是怎么来通信的?

如java, c++, Go等语言的调试工具的构建

四、 待研究的地方

4.1 奇怪的问题:PHPStorm XDebbug连接但未停止,查看