免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5160 | 回复: 3
打印 上一主题 下一主题

求教关于arm环境中gprof生成gmon.out中时间显示问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-11 17:07 |只看该作者 |倒序浏览
小菜在fedora 7 中用交叉编译环境编译一个程序 添加了 -pg项,然后将程序放在arm开发板上去跑,发现其中关于时间的统计显示 inf nan

Each sample counts as inf seconds.
      4   %   cumulative   self              self     total
      5  time   seconds   seconds    calls  Ts/call  Ts/call  name
      6  23.08       inf      inf                             RequireTestPointLimitValPara
      7  15.38       inf      inf                             RB_Downlink_NonNetworkNodesInfo
      8  15.38       inf      inf                             RB_Downlink_SetNodeFixRoute
      9   7.69       inf      inf                             DL698_AFN0BH_RequireTaskData_ProcessAPP
     10   7.69       inf      inf                             GetMeterSwitchOperationCounterAndTime
     11   7.69       inf      inf                             RB_Downlink_ReportNodeInfo
     12   7.69       inf      inf                             RequireCapacitorProtectPara
     13   7.69       inf      inf                             SetCapacitorAddAndDelRunPara
     14   7.69       inf      inf                             _update_path_graph
     15   0.00       inf      nan    81508      nan      nan  APP_GetNextApp
     16   0.00       inf      nan     5824      nan      nan  APP_GetHeartBeatInterval
     17   0.00       inf      nan     5822      nan      nan  APP_GetFirstApp
     18   0.00       inf      nan     5822      nan      nan  APP_NeedAck
     19   0.00       inf      nan     5822      nan      nan  APP_NeedLogin
     20   0.00       inf      nan     5822      nan      nan  CommSurpass_Checker
     21   0.00       inf      nan     5822      nan      nan  DC2MS_CurrCommFlowBytes
     22   0.00       inf      nan     5822      nan      nan  Event_Poll
     23   0.00       inf      nan     5822      nan      nan  Poll
     24   0.00       inf      nan     5822      nan      nan  ScanAutoReportTask
     25   0.00       inf      nan     5822      nan      nan  UpPacket_GetRecvPacket
     26   0.00       inf      nan       33      nan      nan  sched_getParamValue
     27   0.00       inf      nan       14      nan      nan  APP_AddAppElem
     28   0.00       inf      nan       14      nan      nan  DL698_AppRegist


请问如何解决

论坛徽章:
0
2 [报告]
发表于 2010-10-11 17:08 |只看该作者
自个顶下,,希望大家给予帮助,谢谢

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
3 [报告]
发表于 2010-10-11 19:50 |只看该作者
本帖最后由 Tinnal 于 2010-10-11 19:51 编辑

回复 1# xisacihong

查阅了一下gprof的代码(gprof的代码在编译器的工具链的原码中),并没有inf,或nan字符串的出现,证明这是一个gprof都不可预料的错误。google和baidu了一下inf和nan得到如下结果:
进行浮点数编程时,如果没有注意,常常会出现输出类似 1.#IND, 1.#INF 或者 nan, inf 之类奇怪的输出。这通常隐含了浮点数操作的异常。

特殊浮点数的含义
1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。例如,当用 0 除一个整数时便会得到一个1.#INF / inf值;相应的,如果用 0 除一个负整数也会得到 -1.#INF / -inf 值。

-1.#IND / nan:这个的情况更复杂,一般来说,它们来自于任何未定义结果(非法)的浮点数运算。"IND"是 indeterminate 的缩写,而"nan"是 not a number 的缩写。产生这个值的常见例子有:对负数开平方,对负数取对数,0.0/0.0,0.0*∞, ∞/∞ 等。


可以推测gprof在内部运算是出错。
分析最有可能原因为:
因为-pg是一个编译选项,编译器要跟据pg选项生成特定测量代码,这部份代码在程序运行时收集数据,并在程序退出时写盘,以备gprof程序分析。gprof本来就是编译器的一部份,而你采用arm的编译器生成程序,却用主机的gprof来解释数据。数据的格式可能不一致,导致PC版本的gprof解释出错。

建议你用回交叉编器器带的gprof进行分析。

论坛徽章:
0
4 [报告]
发表于 2010-10-12 09:44 |只看该作者
顶不住了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP