C++中ifstream使用笔记(二)(gdb调试案例BUG)
来源:互联网 发布:52算51单片机 编辑:程序博客网 时间:2024/04/29 03:06
需求:将file1中的每行的每个单词保存在string容器中
BUG : 每行的最后一个单词不打印
origin code:int main(){ ifstream input_file; vector<string> ivec; string s, s_word; input_file.open(FILE_NAME, ifstream::in); string::const_iterator itor_s; while(!input_file.eof()) { getline(input_file, s); itor_s = s.begin(); s_word.clear(); for(itor_s;itor_s != s.end(); itor_s++) { if(*itor_s != ' ') { s_word.push_back(*itor_s); if(itor_s == s.end() ) { ivec.push_back(s_word); s_word.clear(); } } else if((*itor_s == ' ')) { if(!s_word.empty()) { ivec.push_back(s_word); s_word.clear(); } } else {continue;} } //ivec.push_back(s); } vector<string>::const_iterator itor = ivec.begin(); for(itor;itor != ivec.end(); itor ++) { cout << *itor << endl; } return 0;}
准备GDB调试:
复习GDB:
- 编译文件必须加上 -g 选项,不然会报错:no debugging symbols found
gcc -g xxx.cpp -o xxx
如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。
- 常用GDB命令:
l (小写的L) :list 显示源代码
break 123 :设置123行断点
break func1 : 设置func1函数入口断点
into break : 查看断点信息
r :run,运行程序,停留在断点
n:单步执行
c:continue继续运行
p i : 打印参数i
bt:查看函数堆栈情况
finish:退出函数
q:退出gdb调试
最最常用的:help -- 查看所有选项帮助
有一篇介绍GDB比较完整的文档
http://blog.csdn.net/dadalan/article/details/3758025
单步调试发现,
if(itor_s == s.end() ) { ivec.push_back(s_word); s_word.clear(); }
这句话永远没有执行
(gdb) p s.end()
发现,这个是文件结束符‘\0’, 这就是关键所在!!!因为for循环取得 *itor_s 最大是走到字串最后一个有效字符
解决方案:
for(itor_s;itor_s != s.end(); itor_s++) 改成
for(itor_s;itor_s != s.end() -1; itor_s++)
打印出来成功,
BUG FIXED
0 0
- C++中ifstream使用笔记(二)(gdb调试案例BUG)
- 使用GDB调试程序(二)
- GDB调试(二)
- GDB调试(二)
- GDB 调试(二)
- GDB学习笔记(二)--调试段错误
- gdb调试技术(二)
- GDB调试程序(二)
- GDB调试技术(二)
- GDB调试程序(二)
- GDB调试程序(二)
- gdb调试器(二)
- GDB程序调试(二)
- Linux下使用gdb进行单步调试(二)
- 【GDB的BUG】文件名中的数字导致调试错误。(附C-Free完全删除手册)
- GDB调试方法(中)
- 使用gdb调试go<二>
- GDB远程调试(二)之用gdb解决segmentation-fault段错误,看gdb的使用(嵌入式)
- java interview 3
- MTK6735如何修改默认数据连接
- 华为机试---计算字符串的相似度
- word2007文档无法编辑怎么办
- 排序算法——归并排序(递归)
- C++中ifstream使用笔记(二)(gdb调试案例BUG)
- Iwfu-安卓传感器(1)
- 8.3指向学生类的指针
- 第八周-项目1-工资类
- Codeforces 677C Vanya and Label(数学)
- ubuntu 装matlab
- 用pull解析xml和pullParse生成xml文件详解
- 会话技术 Cookie和Session
- Mysql-5.7.12安装及配置