![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序调试
Rachelint
不切实际的愉悦犯。
展开
-
文件中经常遇见的小问题
问题1.linux和windows间传文件,’\n’变成"\r\n"。刚刚又被坑了一波,有一段时间我对这个特别敏感,帮同学指出过几次,现在太久没遇见自己都被坑了。解决方法很简单,使用linux上dos2unix这个小软件转一下就行。2.用’\n’分割的txt数据文件中,某一行末尾多了一个空格。就是类似于这样abcabccdecdeefgefg'我是空格'hahahhahaha第一次遇到是在hadoop大作业的时候,还挺坑的,一眼下去啥问题没有。感觉可以写个小工具,自动检测和去除。原创 2020-06-06 17:31:04 · 240 阅读 · 0 评论 -
stackoverflow上关于gdb attach一个很好的回答
原文地址This is a classic problem that people have with gdb. It’s so common that you’d think it would have a handy name!There are a few solutions to the problem, some time-tested and some relatively more experimental.If the program to debug (in gdb lingo, "转载 2020-05-15 14:24:13 · 274 阅读 · 0 评论 -
【gdb多线程调试笔记】gdb attach pid启动方式的应用
1.前言之前一直使用gdb filename方式启动调试,昨天想停住某个特定线程,然后就犯难了,捣鼓了很久。后来就想着,反正都捣鼓gdb,干脆就顺便好好研究一下attach启动方式吧。捣鼓明白之后,感觉自己太智障了,想要在non-stop下停住特定线程,使用attach才是正解。2.attach启动方式相关启动方式假设:程序是使用-g选项编译的,带有调试信息。如何确认程序是否可调试?对于没有调试信息的程序如何处理?这类的问题在后面会介绍,先不涉及;默认为non-stop模式,不过all-原创 2020-05-15 14:17:03 · 3160 阅读 · 0 评论 -
【gdb多线程调试笔记】如何在non-stop模式下停住特定线程(gdb filename启动方式)
1. 前言还是由于最近毕设,需要修改实验室里某个有一定规模的分布式框架。由于动态调试真的很麻烦,这个半个月基本都在看代码和日志来分析程序。虽然经过了半个月,以现在对代码的熟悉程度,忽略gdb动态调试基本也问题不大。但还是觉得很不舒服,很想在实际的多线程调试工作中,加入gdb这个熟手的工具。于是今天就挑战了一下,如何在non-stop模式下,把分解器工作线程给停住。现在还有一个头痛的问题,还没搞懂怎么去调试回调函数,因为gdb跟不进去。2. gdb多线程的三种运行模式假设有t1, t2, t3三个线程原创 2020-05-14 21:58:26 · 1881 阅读 · 0 评论 -
关于坑爹的浮点矩阵乘法结果正确性测试
1.浮点数计算结果与计算顺序相关例如矩阵乘法设mc = ma * mb,都是方阵,维数为8。以c00的计算作为例子,以下这种是最常见的计算顺序c00 = a00 * b00 + a01 * b10 + a02 * b20 + a03 * b30 + a04 * b40 + a05 * b50 + a06 * b60 + a07 * b70计算顺序大致是tc = 0tc = tc +...原创 2019-12-08 22:38:26 · 799 阅读 · 0 评论 -
程序调试感悟
1.调试基本思路我觉得调试的基本思路,就是要确立两个元素:可信点;可疑点;我们一定要首先确定、或者假设一些部分是可信的,一些部分是可疑的。然后在这基础上去编程/笔算出,这种假设下可疑部分的每一步结果应该是怎样的,再用gdb去不断输出结果,和预想进行对比。例如程序存在两个部分:矩阵乘法;找结果矩阵mc中每行最大值组成数组中的最小值;我们如果要进行调试,一定要先确定/假设,某一...原创 2019-12-08 22:07:44 · 623 阅读 · 0 评论 -
segment fault出现的原因收集
1.数组越界这个是看到过最多的,所以当用core定位后发现,那行代码中存在某个数组,基本可以大致确定,问题是数组越界。有两种常见原因导致数组越界:索引值没有初始化,在做基数排序并行化的时候,我某个索引表没有初始化,结果发生了数组越界;索引终点end,和数组长度len傻傻分不清,这个主要依靠规范化自己的编程习惯去避免,例如我现在遇到区间,一定是基于[min, max)这种方式去考虑;2....原创 2019-12-08 21:51:33 · 626 阅读 · 0 评论