免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hitsubunnu
打印 上一主题 下一主题

用什么模块可以分析出 perl程序的 输入和输出文件的文件名 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2009-02-17 09:19 |只看该作者
原帖由 hitsubunnu 于 2009-2-17 00:00 发表
1.不如说说你取它干什么?

我这儿有一个写了很久很大的程序  没使用数据库   都是直接操作文件的 经过很多人更改过 因为历史问题  没有留下任何文档  现在程序出现问题时只能一行行代码看 经常为了找一个文件 ...

办法太多了。
我起码想到了三种。

先试试 ltrace 行不行。

论坛徽章:
0
12 [报告]
发表于 2009-02-17 13:46 |只看该作者
原帖由 flw 于 2009-2-17 09:19 发表

办法太多了。
我起码想到了三种。

先试试 ltrace 行不行。


我现在的做法就是


  1. PERLDB_OPTS="NonStop frame=1 AutoTrace LineInfo=tperl.out"
复制代码

分析 tperl.out 这个文件  取出 open所在行  

然后 在debug的时候 用b设置断点  在用p 获得 $file的 路径和文件名


另外两个方法是什么?

论坛徽章:
0
13 [报告]
发表于 2009-02-17 13:50 |只看该作者
我也有个办法,比较麻烦些

你把 open 包装一下,然后用 Hook::LexWrap;

论坛徽章:
0
14 [报告]
发表于 2009-02-17 13:52 |只看该作者
或者,你自己写个 debuger 算了

论坛徽章:
0
15 [报告]
发表于 2009-02-17 14:02 |只看该作者
终极解决办法,很简单的

你直接修改 perl 的源代码,把 open 那里修改一下,不就可以了嘛

论坛徽章:
0
16 [报告]
发表于 2009-02-17 14:07 |只看该作者
原帖由 cobrawgl 于 2009-2-17 13:50 发表
我也有个办法,比较麻烦些

你把 open 包装一下,然后用 Hook::LexWrap;



Hook::LexWrap  这个模块  好像要和程序写在一起  不能从外面分析

谢谢

我正在研究怎么写一个debug程序  perl本身提供了个  DB 的模块 是开发debug程序的api  但是资料太少

论坛徽章:
0
17 [报告]
发表于 2009-02-17 14:12 |只看该作者
直接改 perl 可能更方便

论坛徽章:
0
18 [报告]
发表于 2009-02-17 14:43 |只看该作者

借地方问个问题...
看到这个帖子, 我第一个想法是 把open包一下
于是我写了如下代码

  1. sub print_param_wrap{
  2.   my $fun = shift;
  3.   return sub {
  4.     print @_, caller(), "\n";
  5.     $fun->(@_);
  6.   };
  7. }
复制代码

这个函数可以对我自己写的其他函数进行包装

  1. sub foo{}
  2. *foo =  print_param_wrap(\&foo);
  3. foo(123);
  4. ---------out put-------
  5. 123maind:/HOME/tt.pl16
复制代码

可是对open这样的内置函数不起作用
为什么呢? open特别在什么地方呢?

  1. print *open;
复制代码

的结果是*main:pen没有看出什么特别的地方

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
19 [报告]
发表于 2009-02-17 15:09 |只看该作者

回复 #18 DQP 的帖子

看看 perlsub 中的 Overriding Built-in Functions 一节应该有帮助。

论坛徽章:
0
20 [报告]
发表于 2009-02-17 17:08 |只看该作者

回复 #19 MMMIX 的帖子

谢谢
大概理解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP