之前已经为其他 IDE 提出过这个问题,但是对于 PHPStorm 呢?有没有办法在调试时退一步?
特别是在抛出异常之后,我想轻松地退后一步。或者至少能够看到调用堆栈,以便我可以快速查看需要设置断点的位置,因为目前我只需要从头开始再次运行并尝试在异常之前停止。
在阅读像The Pragmatic Programmer这样的书之后,强烈建议的一件事就是选择一个文本编辑器并掌握它.我选择使用Emacs并坚持使用它大约半年.然而,让我回到完全成熟的IDE的一件事就是调试.
在尝试通过命令行使用xdebug几周之后,Netbeans/Eclipse提供的调试工具远远优于CLI,这一点也就不足为奇了.
那么,有没有任何Linux工具可以让你在运行时放置断点并帮助可视化你的应用程序,或者我有理由坚持通过CLI调试来解决问题吗?
任何反馈意见!
我想创建一个爬虫,从0到10 000 000逐个获取所有页面的信息.我不需要花多少时间.我只是希望它有效.这是我获得的错误
Fatal error: Maximum function nesting level of '100' reached, aborting! in D:\wamp\www\crawler\index.php on line 25
第25行是
$htmlstr = (string)$this->curlGet($url);
Run Code Online (Sandbox Code Playgroud)
还有我完整的脚本.
谢谢您的帮助 !
header('Content-Type: text/html; charset=utf-8');
ini_set('max_input_nesting_level','100000');
ini_set('max_execution_time','100000');
class crawler{
private $url;
private $page;
private $bothurl;
private $innerDom = null;
public $prop;
public $entry;
function __construct($entry){
$this->entry = $entry;
$this->bothurl = array('http://www.remax-quebec.com/fr/inscription/Q/'.$entry.'.rmx','http://www.remax-quebec.com/en/inscription/Q/'.$entry.'.rmx');
$this->scan();
}
private function scan(){
$i =0;
foreach($this->bothurl as $url){
$this->url = $url;
$this->lang = ($i==0)?'fr':'en';
$htmlstr = (string)$this->curlGet($url);
$dom = new DOMDocument;
@$dom->loadHTML($htmlstr);
$this->page = …Run Code Online (Sandbox Code Playgroud) 我使用 PHPStorm 和 Xdebug 来单步调试我的代码。PHPStorm 在 Windows 7 计算机上运行,而我的本地网络服务器在单独的 CentOS 6.4 计算机上运行。我已经phpinfo();验证了 Xdebug 是否正在被 PHP 加载,确实如此。以下是我的 Xdebug 在 PHP.ini 中的设置:
[x调试]
zend_extension =“/usr/lib/php/modules/xdebug.so”
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = "192.168.1.130"
xdebug.remote_log = "/var/log/httpd/xdebug_log"
我同样设置 PHPStorm 以使用我的 CentOS 服务器作为调试服务器,并监听连接。我为这两台机器分配了静态IP。使用 Chrome Xdebug 插件设置适当的 cookie,我尝试设置断点,但没有任何反应。当我查看 /var/log/httpd/xdebug_log (具有 777 权限)时,那里没有写入任何内容。我已经打开了端口 9000,并且我可以从我的 CentOS 计算机通过端口 9000 远程登录回我的 Windows 计算机,没有问题。我也将SELinux设置为permissive,但没有效果。
你知道这里会发生什么吗?
我正在使用Eclipse开发Android应用程序.当我正在调试时,事情似乎顺利进行,然后Eclipse似乎挂断了 - 一个"无响应"错误.我查看了日志文件,每隔3秒就会收到此超时错误.有人见过这个吗?
我必须继续重启我的机器.
!ENTRY org.eclipse.jdt.debug 4 125 2014-03-12 10:18:19.417
!MESSAGE Internal error logged from JDI Debug:
!STACK 0
org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 12963.
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:186)
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:197)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:191)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:226)
at org.eclipse.jdi.internal.VirtualMachineImpl.classesBySignature(VirtualMachineImpl.java:638)
at org.eclipse.jdi.internal.VirtualMachineImpl.classesByName(VirtualMachineImpl.java:667)
at org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget.jdiClassesByName(JDIDebugTarget.java:1596)
at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.filterUnloadedTypes(JavaHotCodeReplaceManager.java:348)
at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager.notifyUnsupportedHCR(JavaHotCodeReplaceManager.java:379)
at org.eclipse.jdt.internal.debug.core.hcr.JavaHotCodeReplaceManager$2.run(JavaHotCodeReplaceManager.java:322)
at org.eclipse.debug.core.DebugPlugin$AsynchRunner.run(DebugPlugin.java:1068)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.debug.core.DebugPlugin$AsynchRunner.async(DebugPlugin.java:1051)
at org.eclipse.debug.core.DebugPlugin$EventDispatchJob.run(DebugPlugin.java:405)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
!SESSION 2014-03-12 10:30:21.771 -----------------------------------------------
eclipse.buildId=M20130204-1200
java.version=1.7.0_51
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments: -os win32 -ws win32 -arch x86_64
Run Code Online (Sandbox Code Playgroud) 我正在使用xdebug来调试phpstorm的php应用程序.大多数时候调试工作.但是,我反复观察到以下行为:

这几乎就像浏览器认为它在断点处停止一样,即使它不是.关闭和重新开启风暴会暂时解决问题,但问题总是会重新出现.单击"停止侦听传入连接"可以加载页面,但当然可以防止我放入断点.这种行为仍然存在,即使我做添加断点,这是说,我的断点完全被忽略.
如果它有帮助,这是我的xdebug配置,我正在运行从这里下载的php5.5.
这是非常紧张的检查时使用PhpStorm 变量在调试器.有没有办法为使用过的数组订购它们?我已经搜索了很长时间,但似乎没有任何帮助以这种方式得到它.所以,如果你看看我想要的图片#attached在顶部和#user_category底部.
我正在 Linux (WSL2) 上的 Docker 容器内运行 PHP 服务器。我想将 Xdebug 连接到此进程,但无法找到为此使用的 IP。
在 Windows 和 Mac 上,该xdebug.idekey=host.docker.internal变量会自动映射正确的 IP,但据我所知,这在 Linux 中不可用。
ip show route我尝试过手动输入主机和docker-container 之间的 IP hostname -I,但这些也不起作用(即使它们确实起作用,也只是临时修复)。我的容器也没有docker0网络,一些教程想用它来连接,但我不确定那是什么或如何获得网络。
所以问题是:如何获得正确的 IP 地址并自动在我的配置中设置它(docker-file、docker-compose 或 php.ini 文件)
我花了很多时间尝试我或 Google 能想到的一切,但 Xdebug 不会在任何断点上停止。
\n还查看了这个问题和答案,但仍然...不走运:\n Unable to get Xdebug 3 with Docker
\n过去它可以工作,但不知何故它不再工作了。也许是 docker 或任何包/应用程序的更新导致它停止。
\n在 macOS 上:
\n删除了docker,用最新版本(4.8.1 78998)重新安装了它。
\n删除了我当前的 Laravel Sail 项目并通过以下方式创建了一个新的 Laravel Sail 项目curl -s "https://laravel.build/example-app" | bash
添加SAIL_XDEBUG_MODE=develop,debug到新创建的 .env 文件中
sail up -d开始一切
删除并重新安装 Visual Studio Code 最新版本:1.6.7.1
\n创建了一个包含以下内容的 PHP launch.json 文件:
\n{\n "version": "0.2.0",\n "configurations": [\n {\n "name": "Listen for Sail Xdebug",\n "type": "php",\n …Run Code Online (Sandbox Code Playgroud)