条件断点引发的血案

数据质量引发的血案 数据质量问题的产生是在运营流程的各个环节,而其最明显的表现则是在数据的运用环节。我在这里列举了网上公开报道的一系列数据质量问题引发的事件,为了吸引眼球,就允许我俗一把,借用了当年红极一时的《一个馒头引发的血案》,叫做《数据质量引发的血案》。其实也不是我非要哗众取宠,美国还真发生过因搞错病人血型数据,输血造成病人死亡的事件,数据质量还是真引发过血案的。        深圳国土局数据出错引出楼市崩盘 阅读详情

今天在调试打条件断点时,想起一出调试往事。同样也是条件断点,难倒了我们这所有程序员。为了以后总能记得这事,把这事写到偶博客里。

 

当时我们服务器的光哥在Linux下用gdb调试一段代码,发现执行到一个地方时有一个变量的值是一个与预期不符的值,于是顺手打了一个条件断点:当执行到这一行,这个变量的值为那个有问题的值时就断下来,以确定是什么情况下出问题。

 

结果,问题就来了…

 

跑过几次后,光哥郁闷的发现,这个变量的值每次都会错,而且进一步调试后发现,每次都是在这个条件断点所在的行,变量的值就会突变成有问题的那个值。

反复研究得不出结论后,光哥终于不撑了,开始拉外援。看代码,查语法,查线程,看汇编,打数据变化断点。最后都怀疑到硬件上了,服务器都重启几次了…全部无果。一个又一个的程序在光哥的这段程序前倒下了。

 

最后,终于有人发现问题了,条件断点的条件语句写错了,本来条件应该写:

nTableID == 864

结果手一抖,写成了:

nTableID=864

这下好,每次执行到这个断点时,这个变量的值就直接被改写了,而且由于这个赋值语句的求值为非0,于是每次还都能断下来。关键最狠的是,条件断点时把变量值修改了,你针对这个变量地址打数据变更断点,是不会被触发的。

 

结论:永远不要把常量写在逻辑运算符右边。

 

写成下面的样子,绝对不会错:

864==nTableID

 

这一条,不光写代码时非常有用,在条件断点时也非常有用。这种问题从来都是一但出现,非常难查的(眼前放着=,你也不觉得有错的)。不要为所谓的美观、习惯而拒绝这个写法了,它真的能让你的程序生涯更愉快的。

2.数字芯片时序正确的前提—Max-transition 芯片物理设计中最基本的Max-transition检查 阅读详情

相关推荐

5G移动性管理实战:手把手教你配置NR小区重选参数(附避坑指南)

本文深入解析5G网络移动性管理中的小区重选参数配置实战。通过拆解小区选择与重选的核心机制,结合真实案例,手把手指导如何配置NR小区重选参数,并分享常见避坑指南,帮助工程师优化网络性能,提升用户移动体验。

weixin_29229261的博客 200

VS 条件断点

转自 https://blog.youkuaiyun.com/qwang24/article/details/4087423 条件断点   在使用Visual Studio进行debug的时候,设置断点是最常用的、不可或缺的技术之一。大多数情况下,我们只需要在Visual Studio里按F9键,设置一个普通断点即可。但是对于一些特殊情况,这一点可能就不太管用。典型的情况就是在次数很多的循环里,我们需要...

wqfhenanxc的专栏 7835

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2785

linux中gdb进程遇到的问题和坑

文章目录一、非生产环境中可以gdb到一个进程里面,但是有时候停顿太久,gdb附身到这个进程会挂掉,这时候就需要杀死这个gdb进程二、gdb调试程序的时候,有时gdb会因为某些原因crash掉。这时被调试的那个进程往往就成了僵尸进程。这种僵尸进程用killall是杀不掉的,用kill -9或者kill -SIGKILL也是杀不掉的,甚至退出用户登录也杀不掉。很多人这时候只好reboot机器。三、gdb的print打印默认打印不全四、让被gdb调试的程序能够接受信号五、函数明明存在,添加断点却无效六、断点的类型

谢白羽 4822

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 453

开源网格划分软件-Gmsh二次开发教程 (4)网格生成与控制​

​本章将深入讲解Gmsh的网格生成技术,包括全局/局部网格控制、边界层生成、自适应细化等,并提供完整的代码示例。

ZQGG的博客 1474

gdb 条件断点_GDB高级技巧:同一个Bug,5种解决方案,不修改源码,不重新编译

1、引言在《GDB高级技巧:边Debug边修复BUG,无需修改代码,无需重新编译》一文中,介绍了使用GDB breakpoint command lists的功能,可以在不修改源码、不重新编译的前提下,修复掉被调试程序中的BUG,从而避免反复修改代码和编译构建的过程,大大提高程序调试的效率。文中提到了解决一个问题的几种不同的思路,但限于篇幅,只重点讲解了其中的一种。有童鞋希望能够把其它几种也讲解一...

weixin_39713833的博客 936

SGX软硬件栈(二)——硬件指令

硬件指令分为内核权限硬件指令和用户权限硬件指令。内核权限硬件指令指的是指令需要通过内核态下才能访问,缩写是ENCLS。用户权限硬件指令指的是指令用户态下便能访问,缩写是ENCLU。每一个具体的功能指令被称为叶功能,如EADD叶功能,因为叶功能之间的区分是硬件指令(如ENCLS指令:0x 0F 01 CF)的EAX值不同,因此ENCLS指令的EAX在输入时都是用作叶功能号。 内核权限硬件指令-ENCLS 如图2所示,SGX 1代指令中,ENCLS主要用于管理Enclave生命周期等。比如下文将介绍的Enc

小气球归来的博客 2889

VS Debug的条件断点 (深入浅出判断string)

VS Debug的条件断点 (深入浅出判断string)条件断点判断字符串相等错误案例错误案例1错误案例2错误案例3可执行写法正确用法1正确用法2分析string 条件断点 运行环境: Windows10 Visual Studio 2019 编译器默认C++ Debug的条件断点的打开方式:断点右键-选择条件 使用这种方式可以减少用修改源码来断点。 条件断点是在断点处的约束触发条件,并且可以设置断点忽略次数,条件断点在多线程上也能使用,可以线程ID用来分离线程(只在指定的线程中断点) 断点优先级:

云帝的博客 6898

树莓派 5 AI 套件(Hailo)示例

该用户自定义类作为输入传递给回调函数,该函数在管道输出上运行。它用于主程序与回调函数之间的通信。它对 hailo_rpi_common::app_callback_class 进行了扩展,并可根据应用程序的具体情况定制附加变量和方法。

机器人控制与仿真应用 4115

Superpowers与 OpenSpec、Spec Kit 对比

按照官方仓库定义,Superpowers 是一套构建在 composable skills 之上的完整软件开发工作流。它不是单纯的 prompt 集合,而是把一系列工程动作做成默认流程。一个需要明确的点:Superpowers 并不只偏 Claude Code,根据。

人不风流枉少年 1813

一个馒头引发的血案...请看完无极后观看此片,保笑死人不偿命

一个馒头引发的血案...采用搞笑的手法拍摄的,笑到你喷饭,极大的讽刺无极下载地址:点击下载

baggio785的专栏 1487

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8740

一个“Spring轮子”引发的“血案”(2)

  对于胡戈同学的“馒头血案”中的故事来说,那确实是血淋淋的事件发生,而且也是虚构的环节,所以我们可以当着娱乐(当然你要能反思一些东西也没人会管你)。而对于“春迷”们这次非组织、自发的维护Spring的运动并最终制度了“Spring轮子血案”的真实事件来说,让我们看到了一场比鲜红沸腾的热血还要可怕的血――冰冷的血,Web 2.0时代里的血,从红色变成了白色、然后又变成了黑色的血。  从开始的一

蔡世友-重出江湖 5528

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

for update引发的血案

公司的某些业务用到了数据库的悲观锁 for update,但有些同事没有把 for update 放在 Spring 事务中执行,在并发场景下发生了严重的线程阻塞问题,为了把这个问题吃透,秉承着老司机的职业素养,我决定要给同事们一个交代。 案发现场 最近公司的某些 Dubbo 服务之间的 RPC 调用过程中,偶然性地发生了若干起严重的超时问题,导致了某些模块不能正常提供服务。我们的数据库用...

勇往直前的专栏 3947

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于馒头血案引发的法律相关的思考

关于馒头血案引发的法律相关的思考在近段时间,无论是网络、电视、报纸等等各种可见的媒体上都引发了一场大讨论,就是针对最近胡戈在以陈凯歌的《无极》为蓝本进行重新剪辑的《一个馒头引发的血案》的问题。对于这次以“戈”对“歌”的这场大讨论中,可以这样认为,社会舆论基本上是一面倒地支持胡戈,进而大量地批评陈凯歌,可以说,胡戈在这次战斗中曝光十足呀!也因“歌”而声名远播。在这次的新闻媒体的...

weixin_33921089的博客 125

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java序列化引发的血案

序列化和反序列化到底是什么?它是如何引发项目血案的?让我们来一探究竟吧~

smietao的博客 777

一场由Integer引发的血案

Integer的阈值-128~127的问题很多同学没有感触,这篇文章笔者用自己踩过的坑举例,让大家比较清晰的感受到这个问题可能会带来的隐藏风险。

老姚 2742

由F2FS引发的血案

由F2FS引发的血案: https://notes.z-dd.net/2020/12/13/%E7%94%B1F2FS%E5%BC%95%E5%8F%91%E7%9A%84%E8%A1%80%E6%A1%88/

DD'Notes 207

Springcloud微服务合并打包,重复路径引发的血案

按照常理,这样的操作是为了减少服务调用的延迟,提高系统的整体性能。在微服务架构的世界里,各种服务之间的接口调用犹如人类的神经系统,构成了整个系统的核心。在最近的项目测试中,用户中心(User Center,简称 UC)的日志查询功能被发现存在严重的性能问题,具体表现为查询速度异常缓慢。在用户中心中,接口使用了。:改进服务启动时的检查机制,可以通过自定义的脚本或工具,在服务启动前检测可能存在的路径重复或注解冲突。这样看似相似但却有本质区别的注解,需要在设计时充分考虑其不同的调用机制,以避免运行时的意外问题。

木卯的专栏 1393

储能BMS三级架构详解:从BMU到BAU的分工与保护配合

电池管理系统(BMS)是储能电站安全运行的基石,其架构设计直接决定了故障定位效率与系统可靠性。当前主流方案采用模组级(BMU)、簇级(BCU)、堆级(BAU)三级分层管理,本质是将电芯级高频采集与电站级能量调度解耦,实现边缘采集、枢纽决断的协同机制。理解三级架构的分工逻辑、通信规划与保护定值配合,是工程人员掌握储能BMS技术价值的关键入口。在工程实践中,该架构能有效缩小故障隔离范围,例如绝缘告警或簇级异常时仅限制单簇功率,避免全站停机;同时通过簇间均衡与SOP估算支撑多簇并网和PCS联动。本文从模组电压温度

weixin_33755649的博客 427

一个松果引发的血案

     很久很久以前,地球还是一片冰川,一片雪白如银的世界里,有一个黑点,那是一颗松果,当那只不幸的松鼠发现了它,注定了一场血案即将暴发。《冰河世纪2.消融》中,当长毛象和那几位勇敢者登上上帝为众生逃生而建造的巨船之后,你紧张的心情是否已放松,是否为这些动物感到庆幸。在庆幸之余,你又怎能知道后面发生的故事… …     当看到那些动物像潮水般涌上巨船的时候,你是否已经在担心巨船能否容得下这么多的

风子的专栏 1218

引发一场血案_一个域名引发的血案……_0基础网安知识点

你在沙发上看世界杯,黑客在做什么?深夜,当电视机屏幕上那个小小的足球牵动着亿万人的心弦时,猜一猜黑客在做什么?黑客也没闲着。6月29日凌晨,无数球迷正放下小龙虾、握紧啤酒杯

程序员六七的博客 367

一个字符串替换引发的性能血案:正则回溯与救赎之路

1.当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系2.一个字符串替换引发的性能血案:正则回溯与救赎之路3.linux下nacos集群部署报错Error: Could not create the Java Virtual Machine.收起。

weixin_40561095的博客 41

一次serialVersionUID引发的血案

背景: 去掉了两个bean类中重写的equals方法(该equals方法只判断id,相同则true,否则false) 看了看没有什么地方用到了这个equals,就直接去掉了 测试环境出现异常: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [byte[]] to type [java.lang.Object] for value '{-84, -19, 0, 5.

qq_33999844的博客 418

一条sql引发的血案

http://dbaplus.cn/news-11-442-1.html   力荐:一条update语句引发的“血案” http://www.cnblogs.com/svan/p/5584411.html                                       一条慢SQL引发的血案 http://wenzengliu.blog.51cto.com/9378751/1789

581
上一篇: ATL字符串转码的陷阱
下一篇: 鼠标光标的一个“看起来”很神奇的问题
BalonFan
博客等级 码龄26年 47粉丝 41原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值