[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 ...
随机推荐
- performSelector 多个参数
[self performSelector:@selector(callFooWithArray) withObject:[NSArray arrayWithObjects:@"first& ...
- Mac os 系统头像位置。
~/Library/Containers/com.apple.ImageKit.RecentPictureService/Data/Library/Images/Recent Pictures/
- iOS编程(双语版)-视图-Frame/Bounds/Center
1. Frame 每个视图都有一个frame属性,它是CGRect结构,它描述了视图所在的矩形在其父视图中的位置. (屏幕坐标系默认的原点在左上角,x轴向右伸展,y轴向下伸展) 设置frame通常通过 ...
- 手机站CSS
手机web——自适应网页设计(html/css控制) 内核: -ms- /* IE 9 */ -moz- /* Firefox */ -webkit- /* Safari and Chrome */ ...
- 生日日期联动选择birthday.js
实例下载
- C#实现U盘检查,并写入文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- android形状drawable
1.在res目录下新建drawable目录. 2.新建一个xml文件. 3.採用drawable来定义资源. <? xml version="1.0" encoding=&q ...
- not available in automatic reference counting mode
UncaughtExceptionHandler.m:156:47: 'autorelease' is unavailable: not available in automatic referenc ...
- Java千百问_05面向对象(005)_接口和抽象类有什么差别
点击进入_很多其它_Java千百问 1.接口和抽象类有什么差别 在Java语言中.抽象类abstract class和接口interface是抽象定义的两种机制. 正是因为这两种机制的存在,才赋予了J ...
- nmap简单使用
探测同网段ip的存活及开放端口很方便-nmap,行千里者半九十,在于恒心! Nmap 7.40 ( https://nmap.org ) Usage: nmap [Scan Type(s)] [Opt ...