{"id":13699782,"url":"https://github.com/swoole/yasd","last_synced_at":"2025-10-26T10:35:15.068Z","repository":{"id":40798414,"uuid":"317821219","full_name":"swoole/yasd","owner":"swoole","description":"Yet Another Swoole Debugger","archived":false,"fork":false,"pushed_at":"2023-03-24T01:38:26.000Z","size":334,"stargazers_count":358,"open_issues_count":10,"forks_count":35,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-25T01:48:38.355Z","etag":null,"topics":["php","php-fpm","swoole","swoole-debugger"],"latest_commit_sha":null,"homepage":"https://huanghantao.github.io/yasd-wiki/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/swoole.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-12-02T10:06:54.000Z","updated_at":"2025-03-26T16:20:30.000Z","dependencies_parsed_at":"2024-02-10T23:42:42.698Z","dependency_job_id":null,"html_url":"https://github.com/swoole/yasd","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swoole%2Fyasd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swoole%2Fyasd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swoole%2Fyasd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swoole%2Fyasd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swoole","download_url":"https://codeload.github.com/swoole/yasd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252371646,"owners_count":21737373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","php-fpm","swoole","swoole-debugger"],"created_at":"2024-08-02T20:00:43.358Z","updated_at":"2025-10-26T10:35:10.031Z","avatar_url":"https://github.com/swoole.png","language":"PHP","funding_links":[],"categories":["Debugging and Profiling"],"sub_categories":[],"readme":"[English](./README.md) | 中文\n\n# yasd\n\n另一个 Swoole 调试器。[文档](https://huanghantao.github.io/yasd-wiki/)\n\n## 如何使用它\n\n**注意：如果你使用Swoole\\Server，请把`worker_num`设置为1，否则断点可能不会生效。**\n\n### 安装\n\n你需要先安装`boost`库。\n\nmacOS：\n\n```bash\nbrew install boost\n```\n\nUbuntu：\n\n```bash\napt-get install libboost-all-dev\n```\n\nCentOS：\n\n```bash\nyum install boost boost-devel\n```\n\n```bash\nphpize --clean \u0026\u0026 \\\nphpize \u0026\u0026 \\\n./configure \u0026\u0026 \\\nmake clean \u0026\u0026 \\\nmake \u0026\u0026 \\\nmake install\n```\n\n设置 php.ini 文件：\n\n```ini\nzend_extension=yasd\n```\n\n查看扩展信息：\n\n```bash\nphp --ri yasd\n```\n\n### IDE 模式调试\n\n```ini\nzend_extension=yasd\nyasd.debug_mode=remote\nyasd.remote_host=127.0.0.1\nyasd.remote_port=9000\n```\n### cmd 模式调试\n\n```ini\nzend_extension=yasd\nyasd.debug_mode=cmd\n```\n\n所有命令都支持优先级模糊匹配。\n\n如`li`、`lis`、`list`都等于`l`，查看源码\n\n### 开始调试\n\n```bash\nphp -e test.php\n```\n\n### 查看源码 list\n\n```bash\nl\n```\n\n#### 设置断点\n\n```bash\nb 文件的绝对路径 需要断点的行号\n```\n\n默认会将断点信息保存在缓存文件 `.breakpoints_file.log` 中；\n\n你也可以通过修改 php.ini 指定此文件名，如：\n\n```ini\nyasd.breakpoints_file=yasd.log\n```\n\n如果缓存文件存在，当启动调试时，文件中的断点信息会被自动加载；\n\n#### 删除断点 delete\n\n```bash\nd 文件的绝对路径 断点所在的行号\n```\n\n如果设置或者删除断点时，不指定文件绝对路径，默认是当前停留的文件。\n\n#### 监视点 watch\n\n我们可以监控变量变化或条件，例如：\n\n```cpp\nwatch a\n```\n\n```cpp\nwatch a \u003e 10\n```\n\n```cpp\nwatch name == swoole\n```\n\n#### 运行 run\n\n```bash\nr\n```\n\n#### 下一步 step over\n\n```bash\nn\n```\n\n遇到函数的时候，不会进入函数内部\n\n#### 下一步 step into\n\n```bash\ns\n```\n\n遇到函数的时候，会进入函数内部\n\n#### 跳出当前函数 finish\n\n```bash\nf\n```\n\n#### 查看调用栈\n\n```bash\nbt\n```\n\n#### 查看所有断点信息 info\n\n```bash\ni\n```\n\n#### 继续运行 continue\n\n```bash\nc\n```\n\n#### 退出 quit\n\n```bash\nq\n```\n\n#### 打印变量 print\n\n```bash\np\n```\n\n变量名字不需要带`$`，例如:\n\n```bash\np a\np this\np this-\u003eprop\n```\n\n#### 查看当前所在的协程 level\n\n```bash\nle\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswoole%2Fyasd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswoole%2Fyasd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswoole%2Fyasd/lists"}