BianChengNan's Blog

Coding is hard, you can make it easy!


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

调试实战 | 缺少 const 导致的 bug

发表于 2021-01-30 | 更新于: 2024-12-21 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

前言

最近,在项目里遇到一个很 “诡异” 的问题。明明把后面需要使用的值存起来了,可是使用的时候,却拿到了一堆垃圾数据。有可能是什么原因呢?一起来看看吧。

阅读全文 »

2021 开工喽

发表于 2021-01-04 | 更新于: 2024-12-21 | 分类于 福利
字数统计: | 阅读时长 ≈ 分钟

回首 2020

2020 年基本上按照计划做到了周更。虽然每篇文章的阅读量都不高,但是每一篇都很用心的在写。能对一部分小伙伴儿有启发就值了。写这个公众号的初衷本来就是希望能给遇到相同或相似问题的小伙伴以启发。

2020 收获:

  1. 坚持写了一年原创,围绕着调试,排错,性能优化,软件开发写了52+ 篇原创文章。其中,一篇看雪精华,三篇优秀。
  2. 认识了很多新朋友,也认识了很多优秀的大佬。
  3. 更佛系了。

展望 2021

不管怎样,令人沮丧的 2020 已经过去了,充满希望的 2021 已经来了。本公众号还会继续更新,但是更新频率会有所降低。

2021 为本公众号立几个 flag ,希望都能完成,欢迎各位朋友督促。

  1. 至少更新 12 篇原创,争取做到每月一篇。
  2. 争取再拿一篇看雪精华,至少一篇优秀。
  3. 写一篇关于系统优化的实战。目前还没有写一篇真正让自己满意的优化文章。
  4. 坚持分享更多书籍,至少 12 本。

开工福利

2021 希望大家都有新的收获。包邮送四本技术书籍给大家。抽四个幸运儿,每人一本。下周一(2021 年 1月 11 日)0 点开奖。

注意:本次抽奖仅限老粉丝(2021 年 1 月 4 日之前就关注了 公众号 【编程难】 或者 【比目信息】 的小伙伴儿)参与。

《软技能 代码之外的生存指南》

《程序员的自我修养:链接、装载与库》

《Effective C++:改善程序与设计的55个具体做法》

《深度探索C++对象模型》

产品名称 TODO?教你向资源文件中添加宏来自动更新版本信息。

发表于 2020-12-27 | 更新于: 2024-12-21 | 分类于 vs
字数统计: | 阅读时长 ≈ 分钟

前言

产品信息是向用户展示自家产品的直接方式。虽然是否有产品信息对程序功能没有任何影响,但是程序如果缺少了产品信息给人的感觉是不够正规!作为一名负责任的开发人员,你一定想为自己写的程序添加产品信息。你知道该如何添加吗?如何自动更新版本信息吗?

阅读全文 »

调试实战 | 通过转储文件分析程序无响应之使用 windbg + IDA 逆向篇

发表于 2020-12-19 | 更新于: 2024-12-21 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

ida-f5-good

缘起

最近,接连在项目中遇到了两个界面无响应的问题。都只发生在客户特定机器上,不方便直接调试,只能抓取 dump 进行事后分析了。

阅读全文 »

shared_ptr能和基于引用计数的智能指针混用吗?

发表于 2020-12-13 | 更新于: 2024-12-21 | 分类于 开发
字数统计: | 阅读时长 ≈ 分钟

前言

我在上一篇文章中介绍了几种误用智能指针的例子。还有一种比较典型,就是混用两种类型的智能指针。直接看代码吧!

阅读全文 »

奇怪的链接错误 LNK1104

发表于 2020-12-06 | 更新于: 2024-12-21 | 分类于 开发 , 工具
字数统计: | 阅读时长 ≈ 分钟

缘起

一般情况下链接错误很好解决,最常见的是重定义和找不到外部符号,不过这次遇到的链接错误有些奇怪,一起来看看吧。

阅读全文 »

智能指针避坑指南——几种常见的错误用法

发表于 2020-11-29 | 更新于: 2024-12-21 | 分类于 开发
字数统计: | 阅读时长 ≈ 分钟

前言

智能指针的出现大大减轻了 C++ 程序员的心理负担(最少对于我是这样的),不用再时时刻刻担心一个 new 出来的指针是否被 delete 的问题了。虽然智能指针很强大,但是如果用不好,还是会导致各种各样的问题。最近,在项目里看到了几种智能指针的典型错误用法。有的严重,有的轻,有的问题在研发阶段并没有立刻暴露出来,埋下了一颗定时炸弹。趁着这个机会,总结一下几种常见的错误用法。希望对各位小伙伴儿有帮助。

阅读全文 »

栈大小可以怎么改?

发表于 2020-11-22 | 更新于: 2024-12-21 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

前一段日子,遇到了好几个栈溢出异常,相关文章可以点击 这里、 这里 和 这里。解决栈溢出,一般可以从两个方面进行处理。简而言之就是:开源节流!

开源 就是增大栈尺寸。节流 就是减少不必要的内存占用。解决栈溢出,正统的方法是减少内存占用(比如,尽量按引用传递参数)。但是有些情况下了解如何增大线程栈尺寸也非常有必要,可以应急!本文介绍几种增大栈尺寸的方法。

阅读全文 »

server03 从源码到镜像

发表于 2020-11-15 | 更新于: 2024-12-21 | 分类于 教程
字数统计: | 阅读时长 ≈ 分钟

前言

最近跟着国外大佬的视频,从头到尾编译了一遍 server2003。特地把整个过程录制了下来,记录了把 server2003 源码打包成镜像的完整过程,主要分为:环境搭建,编译,验证三个部分。

本文及视频仅用于技术交流,请勿用于非法用途。如有侵权,请联系我删除。

阅读全文 »

有趣的"内存泄漏"

发表于 2020-11-14 | 更新于: 2024-12-21 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

说明

今天的文章比较短,基本上全在视频里了。

这是一份有意思的 “内存泄漏” 视频。加上引号是因为虽然可以称作内存泄漏,但是又算不上真正意义上的内存泄漏。因为虽然短时间内内存暴增,但终归还是能释放掉的。

其实,这个 “内存泄漏” 背后隐藏着一个序列化/反序列化的 bug。很早之前就碰到了这个问题,只不过当时并没有录下来。当时的情况比现在更加明显——内存很快的从 1 GB 增长到 5 GB 左右,然后再释放掉,再增长,再释放,如此往复。不像这次,增长到 4 GB 多的时候,会有一个比较长的停留,然后才释放。

这个问题的根本原因是序列化与反序列化不匹配导致的。在特定环境下定位并解决这种问题是相对容易的,因为问题范围很小,而且对相关源码比较熟悉。具体排除过程没什么好说的。

其实,定位这种问题可以像我在视频里那样用 process explorer 的线程查看功能,粗略查看一下原因。运气好的话,基本可以很快定位。

话不多说,欣赏视频吧!注意视频中红色箭头和红色方框高亮的部分。

1…678…14
BianChengNan

BianChengNan

134 日志
33 分类
221 标签
RSS
GitHub 知乎 博客园
© 2019 — 2024 BianChengNan | 全博客共 字
0%