swoole / yasd

Yet Another Swoole Debugger
https://huanghantao.github.io/yasd-wiki/
Apache License 2.0
357 stars 35 forks source link

能够进入,但是执行下一步,就会报这个错误。php代码没问题。 #177

Closed qingdi closed 1 year ago

qingdi commented 2 years ago

请帮忙看下。多谢

image

php@7.3 boost@1.76 yasd `yasd

Yasd => enabled Author => codinghuang codinghuang@qq.com Version => 0.3.9-alpha Built => Nov 9 2022 14:33:02

Directive => Local Value => Master Value yasd.breakpoints_file => no value => no value yasd.debug_mode => remote => remote yasd.remote_host => 127.0.0.1 => 127.0.0.1 yasd.remote_port => 9003 => 9003 yasd.depth => 1 => 1 yasd.log_level => -1 => -1 yasd.max_executed_opline_num => 0 => 0 yasd.init_file => no value => no value yasd.open_extended_info => 0 => 0 xdebug.coverage_enable => 1 => 1 xdebug.profiler_enable => 1 => 1 xdebug.remote_autostart => 1 => 1 xdebug.remote_connect_back => 0 => 0 xdebug.remote_mode => req => req xdebug.idekey => hantaohuang => hantaohuang `

zhaokeli commented 2 years ago

跟你一样的问题。困扰很久了。各种环境都试了,都会崩掉,:( ,我是phpsotrm+yasd+php8.0
不知道其它用swoole开发项目的人是怎么调试的,难道都是一用yasd的命令行模式一个一个命令打出来的? 还是根本就没用yasd扩展,直接代码里一路的echo var_dump print来调试?

summerKK commented 2 years ago

跟你一样的问题。困扰很久了。各种环境都试了,都会崩掉,:( ,我是phpsotrm+yasd+php8.0 不知道其它用swoole开发项目的人是怎么调试的,难道都是一用yasd的命令行模式一个一个命令打出来的? 还是根本就没用yasd扩展,直接代码里一路的echo var_dump print来调试?

我也是各种都试了,我是php8.1 + swoole5.0 + hyper3.0 没有调试工具写代码太蛋疼了

huanghantao commented 1 year ago

可以考虑PHP升级后使用 swoole-src的 xdebug分支,https://github.com/swoole/swoole-src/tree/support-xdebug 可以直接使用xdebug进行调试,前提是PHP版本要大于等于8.1

huanghantao commented 1 year ago

@summerKK 刚好你是php8.1的,你可以试试

summerKK commented 1 year ago

@summerKK 刚好你是php8.1的,你可以试试

大佬,我测试了一下是可以使用的

summerKK commented 1 year ago

xdebug是3.1.1

huanghantao commented 1 year ago

@summerKK 刚好你是php8.1的,你可以试试

大佬,我测试了一下是可以使用的

  • hyperf2 测试的时候会有一个notice 级别的错误 : Using Xdebug in coroutines is extremely dangerous, please notice that it may lead to coredump!
  • hyperf3 测试这个错误是fatal 级别的错误
  • 然后我把swoole 里面那行检测去掉后,重新编译后就可以完美运行了 image
  • 既然php8.1 以后swoole支持xdebug,这里是不是加个版本判断,大于8.1的,不检测xdebug
  • 我的环境是php8.1 + swoole5.0.1(support-xdebug)

你用的是哪个swoole-src分支,support-xdebug这个分支在php大于等于8.1的情况下是不会抛出这个xdebug告警的

summerKK commented 1 year ago

image 是这个分支

huanghantao commented 1 year ago
image

在PHP8.1的情况下,才会定义宏SWOOLE_COROUTINE_MOCK_FIBER_CONTEXT

huanghantao commented 1 year ago

xdebug是3.1.1

xdebug可以考虑用最新的

summerKK commented 1 year ago
image

在PHP8.1的情况下,才会定义宏SWOOLE_COROUTINE_MOCK_FIBER_CONTEXT

是我的问题,拉的代码拉到master了 😂😂😂😂😂😂😂

huanghantao commented 1 year ago

嗯嗯,master分支的swoole,xdebug调试的时候,调用栈是乱的,而且还可能会发生coredump

zhaokeli commented 1 year ago

@huanghantao @summerKK 非常感谢,百忙之中提供这个问题的解决方案, 我也尽快尝试把项目升级到8.1。

summerKK commented 1 year ago

嗯嗯,master分支的swoole,xdebug调试的时候,调用栈是乱的,而且还可能会发生coredump

重新编译后,运行正常 非常感谢 周末愉快~ 😉😉😉😉😉

summerKK commented 1 year ago

@huanghantao @summerKK 非常感谢,百忙之中提供这个问题的解决方案, 我也尽快尝试把项目升级到8.1。

老哥,提不上感谢,我就测试了一下 我写代码重度依赖xdebug,没有这个感觉不会调试了😂😂😂😂😂 升级php版本可以考虑一下 : https://github.com/rectorphp/rector