View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002366 | Xdebug | Profiling | public | 2025-09-18 19:27 | 2025-09-18 19:27 |
Reporter | Neil | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 3.4.5 | ||||
Summary | 0002366: Profiler output filepaths on Windows prevents Source Code view on Qcachegrind 0.7.4 | ||||
Description | The file paths for fl= use backslashes and that seems to prevent Qcachegrind/Kcachegrind from showing the code in the Source Code tab. If the backslashes are replaced with forward slashes then Qcachegrind/Kcachegrind will show the code in the Source Code tab as expected, see attached screenshots. I looked at Settings->Configure->Source Annotation in Qcachegrind and tried changing it to the path of the source files but that had no effect. Are you able the change the output paths on windows to use forward slashes / either by default or via a configuration setting? As a quick fix I compiled a modified version of xdebug to use forward slashes and that seems to be working. See attached patch file. Qcachegrind 0.7.4 @ https://sourceforge.net/projects/qcachegrindwin/ | ||||
Tags | No tags attached. | ||||
Attached Files | callgrind.out.1758214038.603436.forward_slashes._xdebug_test_xdebug_info_php (349 bytes)
version: 1 creator: xdebug 3.4.5 (PHP 8.3.25) cmd: C:\wamp64\www\xdebug_test\xdebug_info.php part: 1 positions: line events: Time_(10ns) Memory_(bytes) fl=(1) php:internal fn=(1) php::xdebug_info 3 69520 112 fl=(2) C:/wamp64/www/xdebug_test/xdebug_info.php fn=(2) {main} 1 4430 40 cfl=(1) cfn=(1) calls=1 0 0 3 69520 112 summary: 113060 459352 callgrind.out.1758214079.627359._xdebug_test_xdebug_info_php (349 bytes)
version: 1 creator: xdebug 3.4.5 (PHP 8.3.25) cmd: C:\wamp64\www\xdebug_test\xdebug_info.php part: 1 positions: line events: Time_(10ns) Memory_(bytes) fl=(1) php:internal fn=(1) php::xdebug_info 3 72080 112 fl=(2) C:\wamp64\www\xdebug_test\xdebug_info.php fn=(2) {main} 1 9130 40 cfl=(1) cfn=(1) calls=1 0 0 3 72080 112 summary: 142700 521664 0001-Updated-to-use-forward-slashes.patch (2,302 bytes)
Subject: [PATCH] Updated to use forward slashes --- src/lib/usefulstuff.c | 18 ++++++++++++++++++ src/lib/usefulstuff.h | 1 + src/profiler/profiler.c | 4 ++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/lib/usefulstuff.c b/src/lib/usefulstuff.c index 5ae8f0e..4b623de 100644 --- a/src/lib/usefulstuff.c +++ b/src/lib/usefulstuff.c @@ -727,3 +727,21 @@ int xdebug_format_filename(char **formatted_name, const char *default_fmt, zend_ return fname.l; } + +char *xdebug_path_to_forward_slash(char *path) +{ + + if (path == NULL) { + return NULL; + } + + char *p = path; + while (*p) { + if (*p == '\\') { + *p = '/'; + } + p++; + } + + return path; +} \ No newline at end of file diff --git a/src/lib/usefulstuff.h b/src/lib/usefulstuff.h index c382810..a05ef96 100644 --- a/src/lib/usefulstuff.h +++ b/src/lib/usefulstuff.h @@ -39,5 +39,6 @@ FILE *xdebug_fopen(char *fname, const char *mode, const char *extension, char ** int xdebug_format_output_filename(char **filename, char *format, char *script_name); int xdebug_format_file_link(char **filename, const char *error_filename, int error_lineno); int xdebug_format_filename(char **formatted_name, const char *default_format, zend_string *filename); +char *xdebug_path_to_forward_slash(char *path); #endif diff --git a/src/profiler/profiler.c b/src/profiler/profiler.c index 31003f9..fb17b19 100644 --- a/src/profiler/profiler.c +++ b/src/profiler/profiler.c @@ -458,7 +458,7 @@ void xdebug_profiler_function_end(function_stack_entry *fse) } else { xdebug_str_add_literal(&file_buffer, "fl="); - add_filename_ref(&file_buffer, ZSTR_VAL(fse->profiler.filename)); + add_filename_ref(&file_buffer, xdebug_path_to_forward_slash(ZSTR_VAL(fse->profiler.filename))); xdebug_str_add_literal(&file_buffer, "\nfn="); add_functionname_ref(&file_buffer, ZSTR_VAL(fse->profiler.function)); @@ -509,7 +509,7 @@ void xdebug_profiler_function_end(function_stack_entry *fse) } else { xdebug_str_add_literal(&file_buffer, "cfl="); add_filename_ref(&file_buffer, ZSTR_VAL(call_entry->filename)); - + xdebug_str_add_literal(&file_buffer, "\ncfn="); add_functionname_ref(&file_buffer, ZSTR_VAL(call_entry->function)); xdebug_str_addc(&file_buffer, '\n'); -- 2.51.0.windows.1 | ||||
Operating System | Windows 10 21H2 | ||||
PHP Version | 8.3.10-8.3.19 | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2025-09-18 19:27 | Neil | New Issue | |
2025-09-18 19:27 | Neil | File Added: callgrind.out.1758214079.627359._xdebug_test_xdebug_info_php.png | |
2025-09-18 19:27 | Neil | File Added: callgrind.out.1758214038.603436.forward_slashes._xdebug_test_xdebug_info_php.png | |
2025-09-18 19:27 | Neil | File Added: SourceAnnotationDefault.png | |
2025-09-18 19:27 | Neil | File Added: SourceAnnotationSourceDir.png | |
2025-09-18 19:27 | Neil | File Added: php_xdebug-3.4.5-8.3-ts-vs16-x86_64_with_forward_slashes.dll | |
2025-09-18 19:27 | Neil | File Added: callgrind.out.1758214038.603436.forward_slashes._xdebug_test_xdebug_info_php | |
2025-09-18 19:27 | Neil | File Added: callgrind.out.1758214079.627359._xdebug_test_xdebug_info_php | |
2025-09-18 19:27 | Neil | File Added: 0001-Updated-to-use-forward-slashes.patch |