diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/phar/gdbhelp | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/phar/gdbhelp')
-rw-r--r-- | ext/phar/gdbhelp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/ext/phar/gdbhelp b/ext/phar/gdbhelp new file mode 100644 index 0000000..5411858 --- /dev/null +++ b/ext/phar/gdbhelp @@ -0,0 +1,122 @@ +define ___pharglobals + if basic_functions_module.zts + set $tsrm_ls = ts_resource_ex(0, 0) + set $pharglobals = ((zend_phar_globals) (*((void ***) $tsrm_ls))[phar_globals_id-1]) + else + set $pharglobals = phar_globals + end +end + +define ____print_pharht + set $ht = $arg0 + set $p = $ht.pListHead + + while $p != 0 + set $i = $ind + while $i > 0 + printf " " + set $i = $i - 1 + end + + set $temp = *(phar_archive_data*)$p->pDataPtr + ____print_str $temp.fname $temp.fname_len + printf " => " + + if $arg1 == 0 + + printf "%i (alias ", $temp.refcount + ____print_str $temp.alias $temp.alias_len + printf ")\n" + end + + set $p = $p->pListNext + end +end + +define print_phar + set $ind = 1 + ___pharglobals + printf "{" + ____print_pharht $pharglobals.phar_fname_map 0 + printf "}\n" +end + +document display_phar_globals + display phar globals +end + +define display_phar_globals + ___pharglobals + graph display $phar_globals.$arg0 +end + +define print_pharfp + ___pharglobals + set $ht = $pharglobals.phar_fname_map + set $p = $ht.pListHead + set $fpcount = 0 + + while $p != 0 + set $pharname = (*(phar_archive_data*)$p->pDataPtr).fname + set $pharrefcount = (*(phar_archive_data*)$p->pDataPtr).refcount + if (*(phar_archive_data*)$p->pDataPtr).fp != 0 + set $fpcount = $fpcount + 1 + printf "phar %s is open (%i)\n", $pharname, $pharrefcount + end + set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest + set $m = $manifest.pListHead + while $m != 0 + if (*(phar_entry_info *)$m->pData).fp + set $fpcount = $fpcount + 1 + set $a = (*(phar_entry_info *)$m->pData).fp_refcount + printf "phar %s file %s is open (%i)\n", $pharname, (*(phar_entry_info *)$m->pData).filename, $a + end + set $m = $m->pListNext + end + + set $p = $p->pListNext + end + printf "Open file pointers: %d\n", $fpcount +end + +document print_pharfp + displays all open file pointers in phar, and the phars plus entries that are open with reference counts +end + +define dump_entry + ___pharglobals + set $ht = $pharglobals.phar_fname_map + set $p = $ht.pListHead + set $done = 0 + while $p != 0 + set $t = (*(phar_archive_data*)$p->pDataPtr) + if $t.fname[0] == $arg0[0] || $t.alias[0] == $arg0[0] + set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest + set $m = $manifest.pListHead + while $m != 0 + if (*(phar_entry_info *)$m->pData).filename[0] == $arg1[0] + if $argc == 3 + output *((phar_entry_info *)$m->pData)->fp + end + if $argc == 2 + output *(phar_entry_info *)$m->pData + end + printf "\n" + set $done = 1 + loop_break + end + set $m = $m->pListNext + end + end + if $done == 1 + loop_break + end + set $p = $p->pListNext + end +end + +document dump_entry + dump_entry "pharname"|"pharalias" "filename" [1] + display phar_entry_info for a file within a phar. If the optional third param + is passed in, displays the php_stream that is the file's fp +end
\ No newline at end of file |