[trouble shoot]atol和atoll
就终于的结果来看,事实上就是一个小的错误。
但定位错误的时间比較漫长了。。
。
背景:出错的代码是 一段执行在 linux server上的程序,程序的主要功能是处理银行pos刷卡记录并做一些计算。最后汇总、格式化输出。
该公司是和银行打交道的。接的项目都是银行的。
来公司的第二天(第一天熟悉环境,啥也没干)老板就给了我一个2000多行的纯c程序,一个測试出错的測试文档 和 出错的输出结果。
因为历史的原因。。。。。
该段程序经过多人的补补修修,一个没有头文件。木有代码复用,2000多行的一个主文件。
。。
。。
。
加上我是刚来的不懂业务知识。连測试用例都看不懂,像是在看天书。
我试着用vs打开程序,我靠,无法在windows下执行,里面调用的非常多linux系统中的库函数。
。。
。
还好我会linux。我windows下装有cygwin。窃喜。。
。。
程序执行环境不是问题了,也能够正常执行。我就開始追踪bug吧。我也不知道哪里有错误啊,我不懂业务知识。也不知道正确结果是啥啊。
。。果断去问老板,哪里结果不多了。。。。
好了。知道哪里出错了。接下来就是定位它了。在vim下看代码。还是不错的,就当再熟悉熟悉vim了,发现代码里的变量名 还有函数名我都看不懂啊,发现做程序猿业务知识不能不懂啊。
。
。
硬着头皮啃吧,
找到了一些和错误信息相关的变量了,就開始gdb调试了。
。。
。。。。
。。
。
。。
。
。。
终于锁定了问题的出错地点:atol函数。
。。哈哈 。
。
。
。
该段程序就是处理 的数据 都是 从银行 获取的, 比方pos卡消费信息。。。里面都是大数,atol()函数仅仅支持8位啊,换成atoll()就好拉。。
。。
总结:
溢出不会程序不会报错,仅仅会导致结果不对,一定要注意溢出,接受这次的教训
[trouble shoot]atol和atoll的更多相关文章
- Linux下c++中的atoi、atol、atoll、atof函数调用实例
本文中调用的四个函数如下: atoi函数:将字符串转化为int类型变量 atol函数:将字符串转化为long类型变量 atoll函数:将字符串转化为long long类型变量 atof函数:将字符串转 ...
- 在iOS中使用ZXing库[转]
前言 ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, ...
- Command: sl (Steam Locomotive)
You might be aware of command 'ls' the list command and use it frequently to view the contents of a ...
- hdu 1036 (I/O routines, fgets, sscanf, %02d, rounding, atoi, strtol) 分类: hdoj 2015-06-16 19:37 32人阅读 评论(0) 收藏
thanks to http://stackoverflow.com/questions/2144459/using-scanf-to-accept-user-input and http://sta ...
- visualvm添加远程管理-centos
VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用. 1.修 ...
- Common Linux log files name and usage--reference
reference:http://www.coolcoder.in/2013/12/common-linux-log-files-name-and-usage.html if you spend lo ...
- 【转】Installing OpenCV on Debian Linux
In this post I will describe the process of installing OpenCV(both versions 2.4.2 and 2.4.3) on Debi ...
- Dump Checking
Dump Checking Debug相关的一些小技巧 摘要: 1. 如何Debug一个进程的子进程? 答: 使用WinDBG attach到父进程, 然后输入命令".childdbg 1& ...
- Windbg(2)
摘抄于:http://www.cnblogs.com/awpatp/category/228209.html Debug相关的一些小技巧 摘要: 1. 如何Debug一个进程的子进程? 答: 使用Wi ...
随机推荐
- http支付导图流程
第三方提交数据到官方的URL(加带参数)---官方服务器处理完成---跳转到第三方URL(加带参数)---第三处理---结束
- IDEA 之 “There is no configured/running web-servers found!...”
首次配置 IDEA 2017.1.1 与 Tomcat9.0 的 java 开发环境. 在配置成功并创建第一个 Web Application(3.1) 项目后,运行或调试正常运行. 直接在 jsp ...
- C++ 第四课:ASCII 码表
下面的 ASCII 码表包含数值在0-127之间的字符的十进制.八进制以及十六进制表示. 十进制 八进制 十六进制 字符 描述 0 0 00 NUL 1 1 01 SOH start of hea ...
- Java 代码行统计(转)
package codecounter; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFound ...
- iPad Air 2全然评測:可怕的三核CPU、六核GPU
在了解了三核心A8X的基本情况后.我们再来通过測试数据,全面地了解一下iPad Air 2的性能表现,包含CPU.GPU.存储.电池.屏幕.摄像头.导航等等. [CPU性能測试:三核太可怕了] 移动处 ...
- scpclient使用报错fchmod无法找到问题解决
因为这个函数时linux下专用的,Windows下无法使用,所以会导致提示这个函数不能使用,解决的方法如下: 1. import platform 2. if platform.system() == ...
- urlparse基本运用
# -*- coding: cp936 -*- #python 27 #xiaodeng #urlparse基本运用 import urllib,urlparse def urlparse_test( ...
- ArcGIS 概述
ArcGIS产品线为用户提供一个可伸缩的,全面的GIS平台.ArcObjects包含了大量的可编程组件,从细粒度的对象(例如,单个的几何对象)到粗粒度的对象(例如与现有ArcMap文档交互的地图对象) ...
- 【TP3.2】TP3.2下实现ajax分页(原创+亲测可用)
一,写在最开始:ajax分页的原理,是利用了js的ajax执行请求,获取分页list和分页page [代码块],去替换页面显示数据的[代码块] 技术:js的ajax + TP3.2的fetch(&qu ...
- spring事务——try{...}catch{...}中事务不回滚的几种处理方式
当希望在某个方法中添加事务时,我们常常在方法头上添加@Transactional注解 @ResponseBody @RequestMapping(value = "/payment" ...