View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001374 | Xdebug | Step Debugging | public | 2016-12-03 11:30 | 2023-10-28 17:24 |
Reporter | Radek Suski | Assigned To | derick | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | unable to reproduce | ||
Platform | Raspberry PI | OS | raspbian | OS Version | 4.4 |
Product Version | 2.4.0 | ||||
Summary | 0001374: XDebug seems to be overwriting thee FILE and DIR constants | ||||
Description | as in the summary. | ||||
Steps To Reproduce | Well, this is a bit strange because I know it worked before but suddenly when I am trying to debug within Joomla! my own library those constants containing values as follow:
| ||||
Tags | No tags attached. | ||||
Operating System | macOS 10.12.1 (16B2555) | ||||
PHP Version | 7.0.10-7.0.14 | ||||
|
BTW: I am apparently not the only one: Additionally because every time I wrote it people assuming I am using "eval", so just to clarify I don't |
|
Hi, thanks for the report. In order to find and fix the bug, I really do need a reproducible case. As this seems to be a remote debugging issues, please refer to https://xdebug.org/support.php#remote as to what I would require. cheers, |
|
Sure thing, here is the script: https://gist.github.com/Radek-Suski/660a8b820c98763304fa8617fa7c77d1 What really weird, I just realised, that debugging this script gives following results:
Which means that if I assign those constants to variables, those variables are having correct values. Regards, |
|
Hi, I see what happens now. You have these in the "Watches" field. PhpStorm handles watches by running the DBGp "eval" command. In the log, that looks like: <- eval -i 62 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzlmNmZiNjcxLWU0ZWItNDIyNy04Mzc2LTNhNjNkZDNiMmNmMCddPV9fRElSX18= As the eval command really just calls PHP's eval, you get the same result: $ php -r "echo eval('echo FILE;');" Xdebug does replace the "Command line code(1) : eval()'d code" with "xdebug://debug-eval" though. This is something I can not change. |
|
@derick Thank for your answer. Yet I am not sure if you are entirely correct. Yes, I have it in watches. But even if, the logical execution is failing. I am asking: if(file_exists( DIR.'/file.php')) and it returns "false". It can't be just because I have it in my "watches" because at the first time I was debugging my case, it wasn't |
|
No, it can't be because it's in watches. But that "file_exists" would only file for real reasons. If you can reproduce this, I would use "strace -o /tmp/strace.log php script.php" and see for which file it is doing a "stat". |
|
I know for sure that this file exists. That's how I figured out this issue |
|
Okay - I would definitely use the strace then. There must be something why PHP thinks it's not there, and strace is your only hope I think. |
|
no problem. I will try to deliver it soon. Thank you very much |
|
(Changing it to feedback until you do). |
|
Ping? |
|
I am closing this, as I can't reproduce this, and the requested feedback has not been given. Please feel free to reopen this if you can provide more information as requested. |
|
This error is repeated for me! How can I fix it? xdebug 2.5.5-1 |
|
Xdebug 3.2.1, the problem persists (as far as I understand, in all other versions too). To reproduce it, it is enough (when working in phpstorm) during a debugging session to open the Evaluate Expression window (alt + F8) and enter one of these constants there. You can just use the debug console, you can use the clock, the behavior is the same everywhere. |
|
@anton.m4354: I would still expect what you show. When PhpStorm evaluates
Which on the PHP CMD also produces a similar result:
Returning:
Xdebug does wrap that in its own file name though, which is |
|
@derick that is, if Phpstorm would directly |
|
@derick, well, I tried to display the FILE constant in cmd with and without eval, and the difference is that without eval there will be no right-hand side of the "eval()'d code". And in the case of a constant, DIR is not replaced there at all, and is output correctly. And you said that xdebug wraps in its filename, that is, in |
|
@derick I think I understand what's going on. I’m certainly not a C++ programmer, but after looking at your repository, as well as the php source repository, I saw a function like zend_eval_string(), and you pass But nevertheless, if you run debug_backtrace()[0] in the debug console, then in its output you can see the correct full path to the file, and from it you could get values equivalent to UPD: I noticed that debug_backtrace[0] does not always display the file where the stop occurred. In some cases, xdebug:/debug-eval is displayed there. But anyway, in this case the file with the breakpoint is already in the next element of the result array - in debug_backtrace[1]. That is, there is still information about him |
|
The PHP interpreter replaces If Xdebug calls The third argument to |
|
@derick Well, I’m not saying that you need to redefine constants through the third argument in zend_eval_string, I’m suggesting to open a ticket for the php developers in their tracker so that they change the behavior of this function |
Date Modified | Username | Field | Change |
---|---|---|---|
2016-12-03 11:30 | Radek Suski | New Issue | |
2016-12-03 11:39 | Radek Suski | Note Added: 0003874 | |
2016-12-03 12:46 | derick | Note Added: 0003875 | |
2016-12-03 12:46 | derick | Assigned To | => derick |
2016-12-03 12:46 | derick | Status | new => feedback |
2016-12-03 13:21 | Radek Suski | Note Added: 0003882 | |
2016-12-03 13:21 | Radek Suski | Status | feedback => assigned |
2016-12-04 17:33 | derick | Note Added: 0003924 | |
2016-12-04 17:33 | derick | Status | assigned => resolved |
2016-12-04 17:33 | derick | Resolution | open => not fixable |
2016-12-04 17:39 | Radek Suski | Note Added: 0003925 | |
2016-12-04 17:39 | Radek Suski | Status | resolved => feedback |
2016-12-04 17:39 | Radek Suski | Resolution | not fixable => reopened |
2016-12-04 17:54 | derick | Note Added: 0003927 | |
2016-12-04 17:54 | derick | Status | feedback => resolved |
2016-12-04 17:54 | derick | Resolution | reopened => no change required |
2016-12-04 18:50 | Radek Suski | Note Added: 0003928 | |
2016-12-04 18:50 | Radek Suski | Status | resolved => feedback |
2016-12-04 18:50 | Radek Suski | Resolution | no change required => reopened |
2016-12-04 19:09 | derick | Note Added: 0003929 | |
2016-12-04 19:11 | Radek Suski | Note Added: 0003930 | |
2016-12-04 19:11 | Radek Suski | Status | feedback => assigned |
2016-12-05 14:19 | derick | Note Added: 0003943 | |
2016-12-05 14:19 | derick | Status | assigned => feedback |
2017-01-03 18:49 | derick | Note Added: 0004128 | |
2017-02-07 17:08 | derick | Note Added: 0004200 | |
2017-02-07 17:08 | derick | Status | feedback => resolved |
2017-02-07 17:08 | derick | Resolution | reopened => unable to reproduce |
2017-12-20 16:43 | spiritabsolute | Note Added: 0004523 | |
2020-03-12 16:33 | derick | Category | Remote Debugging => Step Debugging |
2023-09-02 06:31 | anton.m4354 | Note Added: 0006644 | |
2023-09-02 06:31 | anton.m4354 | File Added: bandicam 2023-09-02 12-27-32-129.mp4 | |
2023-09-03 13:47 | derick | Steps to Reproduce Updated | |
2023-09-03 13:47 | derick | Note Edited: 0003882 | |
2023-09-03 13:59 | derick | Note Added: 0006645 | |
2023-09-03 19:14 | anton.m4354 | Note Added: 0006646 | |
2023-10-18 16:08 | anton.m4354 | Note Added: 0006661 | |
2023-10-18 16:08 | anton.m4354 | File Added: image.png | |
2023-10-18 16:08 | anton.m4354 | File Added: image-2.png | |
2023-10-22 12:01 | anton.m4354 | Note Added: 0006662 | |
2023-10-22 12:02 | anton.m4354 | File Added: image-3.png | |
2023-10-27 10:24 | derick | Note Added: 0006663 | |
2023-10-28 17:24 | anton.m4354 | Note Added: 0006665 |