[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 ...
随机推荐
- 微信小程序 - 自定义switch切换(示例)
点击下载:switch示例 ,适用于表单,官方switch 说明 .
- Java多线程之线程的状态以及线程间协作通信导致的线程状态转换
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561589.html 一:线程的状态以及变化图 Java中线程中状态可分为五种:New(新建状态),Ru ...
- 系统安装-007 CentOS7yum源添加、删除及其yum优化(转)
一.配置阿里云源为主源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bakwget -O /et ...
- 获取公钥证书的DN(Distinguished Name)
DN -- Distinguished Name,证书持有人的唯一标识符. 可以通过下面的openssl命令来打印出证书的DN. openssl x509 -subject -nameopt RFC ...
- 〖Android〗快速部署SSHD和Bash Shell(程序:DroidSSHD和BetterTerminalEmulatorPro)
--此文仅做个人配置记录-- 因为我经常需要sshd来连接设备,它抓取logcat日志太方便了,方便排查问题,及多人共享: 及有USB孔限制的人来说,这个更具有意义: 把超级终端增强包部署到内网,也是 ...
- 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效
Spring Boot加载配置文件,默认会从几个固定位置搜索一下看看有没有配置文件 ——application.properties或者bootstrap.properties(如果你使用了sprin ...
- CentOS7 通过代理上网
1.修改/etc/profile,增加以下内容: http_proxy=http://[代理地址]:[代理地址的端口]/ https_proxy=http://[代理地址]:[代理地址的端口]/ ex ...
- 最长公共子序列(POJ1458)
题目链接:http://poj.org/problem?id=1458 题目大意:给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和 ...
- SElinux测试及排错
一.修改SElinux的状态 #sestatus --查看状态 #setenforce --临时修改 #setenforce #getenforce #vim /etc/selinux/config ...
- RHEL7 Apache 服务测试
把防火墙和selinux关闭,这样试验过程中就不用配置相关策略了. 实验一.安装apache,并提供服务 在RHEL1上 #yum install -y httpd #echo basictest & ...