程序调试小tips

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题 本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。 阅读详情

身为万千码农中的一员,程序中的bugs往往困扰着我们,给我们朴实无华的编程生活带来无尽的惊喜(惊吓)和感动(崩溃),下面结合我编程经历,分享一些调试经验。

1. 找bugs

当代码报错的时候,最重要就是出错提示,IDE会给我们提示errors有哪些,errors在哪些行,这往往是最有用的,但往往也是最有迷惑性的,当看到几十个error的时候,可能会有些崩溃,但是通常的经验而言,有两种常见的情况:(1)这众多的error所属同一类的可能性非常高,也就意味着当解决一个,其他的也就迎刃而解;(2)一个error引发其他error,由于存在函数的层次、嵌套调用,最底层的代码出现error(一般情况为传参失误,导致高层一系列错误),导致高层代码出错。

2. 软件测试思想

软件测试是一个发现错误的过程,核心思想“证伪”。软件测试最常用的是白盒、黑盒以及灰盒测试。白盒测试是在已知代码的情况下进行的测试,从而编写详细测试代码;黑盒测试是没有获得代码,从而处于“黑盒”状态,我们只可以使用程序的功能,所以黑盒测试是功能测试;灰盒测试结合了白盒和黑盒的特点,黑盒测试直接面向功能和需求,所以容易发现错误,但是我们无法提出解决bugs的方案,而白盒测试要求程序员清楚程序代码的逻辑和细节信息,工作量巨大而且要求比较高,灰盒测试最为常用,我们常常是先进行黑盒测试,再对代码进行白盒测试。

3. bug定位

在报错的行设置断点,然后debug的思路固然很好,但是有些程序往往不能进行调试,例如程序涉及多线程、事件触发等等,所以常用的解决方法如下:在报错的行前后写一些输出语句,核对前后的输出结果。我们需要验证的是:程序有没有执行进入这一分支(循环或这一行代码)、执行结果是否正确。所以常用的两种输出语句,第一类例如在报错前后输出print(“haha”)来验证程序有没有执行或进入这一部分(需要注意的是前后都要有,形成自己定义的一个测试域);第二类,类似第一类,在需要测试的域前后分别输出变量值,用来核对……这一方法虽然简单,但是非常实用,可以发现和解决大量错误,如果自己不能解决的话,在搜索引擎查找可以解决99.9%的问题。

4. 常用方法

(1)边界值分析

如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。用来验证值的边界部分。

(2)专业的软件自动化测试软件

例如PC-Lint用来做C/C++静态测试,Junit进行Java单元测试,QTP:功能测试(QTP需要VBScript基础),Eclemma:用测试覆盖率评价测试代码的质量……

5. 软件测试整体流程

(1)单元测试:分模块测试;

(2)集成测试:模块间的集成;

(3)确认测试:确认功能;

(4)系统测试:验证系统是否满足需求规格定义;

(5)验收测试:用户在测试人员的协助下对系统进行测试和接收;

(6)回归测试:修改了旧代码后,重新进行测试以确认修改没有引入新的错误。

结合软件测试各阶段的思想,进行软件测试从而发现bugs,祝大家都有所收获,解决所有bugs。

 

【机器人】线性方程最小二乘解法对机械臂DH参数进行标定 1.前言 看了一篇文章,觉得里面的DH参数标定法讲的很清晰,便使用Matlab复现了一下,效果还可以,特写此文记录。 2.原理 2.1.误差最佳值的最小二乘计算 有研究结果表明:几乎95%的机器人位置误差都是由机器人内部运动学的不准确描述引起的,所以对DH模型参数进行标定是很有必要的。 DH参数物理含义:选自《机器人学、机器视觉与控制-Matlab基础》 当DH参数确定后,我们... 阅读详情

相关推荐

LIGGGHTS开源离散元仿真:从基础安装到高级应用实战

本文详细介绍了LIGGGHTS开源离散元仿真软件的基础安装、脚本编写及高级应用实战。从颗粒自由落体模拟到工业级复杂系统建模,涵盖CFD-DEM耦合、高性能计算优化等关键技术,帮助用户快速掌握这一强大的颗粒仿真工具。特别适合需要处理颗粒系统仿真的科研人员和工程师。

l1k9j8h7g6的博客 620

微信小程序之调试模式

“Console”:小程序的调试控制台;“Wxml”:和查看html页面结构类似;“Sources”:显示项目的脚本文件;“Appdata”:查看项目的数据情况;“Storage”:储存器窗口(用于显示项目在使用wx.setStorage接口或者wx.setStorageSync接口后的数据存储情况)...

anshenggui的博客 1万+

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

模糊测试--强制性安全漏洞发掘

文档分享地址链接:http://pan.baidu.com/share/link?shareid=2723797392&uk=2485812037 密码:r43x 前 言 我知道"人类和鱼类能够和平共处" 。 --George W. Bush, 2000年9月29日 简介 模糊测试的概念至少已经流传了20年,但是直到最近才引起广泛的关注。安全漏洞困扰了许多流行的客户端应用程序

软件性能测试专栏 2万+

【Linux】Petalinux使用QSPI FLASH引导启动

1. 预分配Flash空间使用Flash引导Petalinux做的系统,也有进阶的做法。部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。1. 预分配Flash空间根据生成的bit文件大小估算BOOT.BIN文件的大小,为Flash大概分配四个分区:boot、bootenv、kernel、bootscr,分别存放BOOT.BIN文件、u-boot的环境变量、内核文件(image.ub/zImage/uImage等)、启动脚本boot.scr。

Tesseract_9527的博客 3375

【一张图系列】别再混淆了!5分钟搞懂ERP、MES、PLC的职责边界与数据流》

《ERP、MES、PLC系统边界与协作解析》一文清晰阐述了制造业三大核心系统的角色分工与数据流转。文章将ERP比作企业"大脑"负责战略规划,MES作为车间"指挥官"负责执行调度,PLC则是设备"士兵"执行具体操作。通过一张架构图展示了从计划层到控制层的完整信息流:蓝色箭头表示指令下行(ERP→MES→PLC),橙色箭头代表数据上行反馈(PLC→MES→ERP)。文章强调理清系统边界对数字化转型、部门协作和项目实施的关键作用,并预告下期将深入解析ME

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 974

Chrome调试Tips

从左至右依次是: (等号)pause script execution –>下一个断点 (半弧箭头)step 快捷键:F9 –>下一行 (下箭头)step into 快捷键:F11 全称:step into next function call –>下一行,遇到子函数就进去继续 (上箭头)step over 快捷键:F10 全称:step over next function call –>下一行,如果已经在函数内部,则不再进入子函数内部,在外部则,进入函数。 (右箭头)step .

ganle的博客 425

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

(调试) tips

1 再修改bug的时候最好处于西塔波,就是非常放松,类似于睡眠的状态。 2 利用outline来选择struts的action 3 多添加system.out.println()语句 4 如果能把程序的执行过程用自己的语句描述出来,让后写在txt文本当中,一点一点的修改啊。下面是一个例子 1 登陆完成以后userlogin.do,进入的页面时memberCenter.jsp, 在这个页

longyuan20102011的专栏 420

【SigmaStar SSC335系列】空片用Flash_Tool烧写

简介 本文主要讲新拿到的PCBA,板上spi nand flash还是空的,如何在这种情况下烧录固件,这里讲解用官方Flash_Tool烧写的方式。 但只讲一些注意的地方和坑,其它的官方文档里说的比较清楚,不多说。 准备 Flash_Tool烧写软件 编译打包好烧写镜像 串口烧录小板 ----- 这个是个坑,在官方文档里并没有提及,刚开始用的平时调试的USB转串口,怎么都没反应,一度不知烧写软件不对还是硬件有问题,最后通过厂家技术支持才得知,除了专门的Flash_Tool外,还要专门的串口烧录器

老K 4700

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1034

Software tips

1、Microsoft office professional plus 2013秘钥 PD3W7-NVGG7-YKGQX-7CRDG-J2MG7(test success)MTGRC-8BM6H-WD7X3-4JJDJ-7XTMM 2、记事本修改背景颜色 在运行窗口输入“regedit”,然后点击“确定”打开注册表编辑器后,依次展开“HKEY_CURRENT_USER\Contr...

weixin_34162401的博客 152

真题库系列之 CCF GESP 2025年12月认证 Python 1级真题含正确答案与解析

学生通过计算机基础知识的学习,了解计算机的构成与操作,以及计算机的发 展历程。通过编程基础知识以及语句的掌握,可以独立完成简单功能的顺序结构、 分支结构、循环结构的程序。

iCloudEnd的博客 319

MFC Tips

//z 2014-04-25 11:47:44 L.250'43936 BG57IV3@BYH T1068848856.K.F253293061 //z 2014-04-25 13:14:40 L.250'38720 T594586945 .K[T301,L4278,R198,V5542] strlenwcslen_tcslen strch...

182

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

GDB的几个TIPS

  [disas]  反汇编一段指令。可以带零个、一个或两个参数。第一个参数是反汇编开始地址,第二个参数是反汇编结束地址。  如果没有参数,则反汇编当前的函数。  [内存读/写断点]  watch *(int *)0x12345678  在 0x12345678 处下写断点,断点的范围为 4个字节。  gdb支持更大范围的内存写断点。  rwat

许海斌的专栏 1147

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

gdb tips

gdb tips (by hanlray(at)gmail.com) gdb program 指定要调试的程序,进入gdb环境,但是并不运行该程序 break/b linespec 设置断点,linespec指定断点位置,可以用多种方式指定,如行号、函数名等 break/b linespec thread threadno 在指定的threadno上设置断点,断点只对该线程有效,不指定

hansoft's blog 1330

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

德州园林系统的tips

关于如何看懂log4日志 从中调试程序 关于未找到了托管xxx 设置easyui-checkbox选择框选取的值 : 1.document.getElementbyId("xxx").value =set_value 对通过Id为各个选择框赋值 . 2.checkBox =document.getElementbyName("xxx"); 获取到同一name...

dianyanxia的博客 188

(转)GDB Tips

<br />http://hi.baidu.com/comcat/blog/item/c51313105b1bed05203f2ea6.html<br /> <br />1. 查看寄存器<br /><br />(gdb) i r<br />(gdb) i r a                     # 查看所有寄存器(包括浮点、多媒体)<br />(gdb) i r esp<br />(gdb) i r pc<br /><br /><br />2. 查看内存<br /><br />(gdb) x /wx

hairetz的专栏 3149

Xcode Tips 001:调试时移动指令指针

Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者丨->来源丨知识小集(ID:zsxjti...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 149

Coding Tips

编程调试技巧:  将输入输出写在stdin.txt与stdout.txt中,便于调试程序。 freopen("stdin.txt", "r", stdin); freopen("stdout.txt", "w", stdout);

The sound of silence 230

调试程序tips

1 命令行编译qt程序 mkdir build cd build qmake ../src make 2 将print的内容写入到文档中 //XX是运行的程序 ./XX &> log.txt 查看文档内容 tail -f log.txt 3 qt程序调试 在pro文件中加入 CONFIG += debug 运行程序 //XX是运行的程序 gdb XX 依次输入以下命令 start n ...

二颖的博客 340

SAP/EXCEL日常操作Tips

SAP日常运维工作中的一些操作小技巧。

m0_57338668的博客 818

sstream 小tips

今天写了点垃圾代码,如下: fstream ifile; string thestr; stringstream strstream; int ele; string waste; ifile.open(argv[i]); getline(ifile,thestr); strstream << thestr; while (strstream >> ele){

ltm1994的博客 366

od使用的小tips

1.程序领空,系统领空:如果打开时是系统领空 可能是此程序没有放在桌面上,放在映像文件夹里了 2.程序领空中前面如果有→则证明有跳转 3.大括号是灰色,跳转不成立,大括号是红色,跳转成立,直接右键nop填充,将判断的部分空填充,就能直接转向成功的一部分 4.od运行的时候不能是暂停状态,要变成运行状态f9 5.保存时nop处可以多选,不要少选,弹出窗口右键保存文件 6.右面寄存器中 z如果是1,j...

qq_44661192的博客 434

关于恶意代码的一些TIPS

简单谈谈什么是恶意代码,恶意代码的传播方式和防范工具,国内外有哪些工具支持恶意代码的同源分析 ~

m0_50579386的博客 1976

Top 10 Java Debugging Tips with Eclipse

在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便。在本文中使用的是Eclipse Juno版(Eclipse 4.2),在开始前给大家提3点建议! 不要使用System.out.println作为调试工具把所有涉及到的组件日志级别激活并使用使用日志分析器来读取日志 1.条件断点 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建

寻道 2218
上一篇: [显存被占满,程序无法运行问题]ResourceExhaustedError (see above for traceback): OOM when allocating tensor
下一篇: 首次使用Anaconda的常规步骤——解决CondaHTTPError而导致的下载或更新中断问题
Fox_Alex
博客等级 码龄10年 47粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值