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进行通信的?
- 查看监听的端口号是否建立连接?

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

-
使用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连接但未停止,查看