BianChengNan's Blog

Coding is hard, you can make it easy!


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

栈大小可以怎么改?

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

缘起

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

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

阅读全文 »

server03 从源码到镜像

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

前言

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

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

阅读全文 »

有趣的"内存泄漏"

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

说明

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

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

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

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

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

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

栈局部变量优化探究,意外发现了 vs 的一个 bug ?

发表于 2020-11-08 | 更新于: 2026-02-16 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

我在《栈又溢出了》 一文中记录了一个奇怪的栈溢出问题。虽然解决了,但是总感觉哪里不太合理。我想,vs 一定有一个合理的设置。一起折腾起来吧!

阅读全文 »

栈又溢出了

发表于 2020-10-31 | 更新于: 2026-02-16 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

最近,项目代码再次出现了栈溢出问题。这次的栈溢出跟上次有点不同,调用栈不深,而且报错的时候函数代码还没开始执行。是不是有点“诡异”?一起来看看这次是什么原因导致的吧。

阅读全文 »

let's make dependency walker fast again

发表于 2020-10-24 | 更新于: 2026-02-16 | 分类于 工具
字数统计: | 阅读时长 ≈ 分钟

缘起

最近,经常需要调查 dll 加载失败的问题。前一阵子刚分享了一篇,感兴趣的小伙伴而可以点击 这里。相信,有 windows 开发经验的小伙伴儿一定听过 Dependency Walker 这款工具,它可是查看模块依赖关系的神兵利器。但是在我的机器上,Dependency Walker 运行的特别慢,经常无响应!慢了这么久,是时候提提速了。

阅读全文 »

有趣的异常

发表于 2020-10-18 | 更新于: 2026-02-16 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

最近,在项目中遇到一个有趣的异常。在没附加调试器的情况下会直接崩溃。附加调试器后,会中断到调试器中,但是按 F5 继续运行后,程序还能继续执行。 interesting !你能猜出这是个什么异常吗?

阅读全文 »

再分享 5 个 vs 调试技巧

发表于 2020-10-11 | 更新于: 2026-02-16 | 分类于 vs
字数统计: | 阅读时长 ≈ 分钟

前言

之前在 《5 个非常实用的 vs 调试技巧》 和 《继续分享 5 个实用的 vs 调试技巧》中分享了 10 个我认为非常值得了解的 vs 调试技巧,本周继续分享 5 个很实用的调试技巧。

阅读全文 »

调试实战 | 使用 windbg gflags dumpbin 排查应用程序启动错误

发表于 2020-09-26 | 更新于: 2026-02-16 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

前一阵子,更新完依赖库后,启动程序报错了。这已经不是第一次报错了。so…… let's dig in!

阅读全文 »

基础知识 | c++ 有趣的动态转换之 delete 崩溃探究兼谈基类虚析构的重要性

发表于 2020-09-19 | 更新于: 2026-02-16 | 分类于 c++
字数统计: | 阅读时长 ≈ 分钟

前言

在《基础知识 | 有趣的动态转换》 这篇文章中,运行 测试代码3 会崩溃。本文试图揭示崩溃的原因。

阅读全文 »

基础知识 | C++ 虚函数简介

发表于 2020-09-13 | 更新于: 2026-02-16 | 分类于 vs
字数统计: | 阅读时长 ≈ 分钟

缘起

在上一篇文章中,测试代码2 中的 pBaseA->AA(); 输出的内容很“奇怪”。其实,完全在情理之中。本文将简单探究一下 c++ 中的虚函数实现机制。本文主要基于 vs2013 生成的 32 位代码进行研究,相信其它编译器(比如,gcc)的实现大同小异。

阅读全文 »

基础知识 | 有趣的动态转换

发表于 2020-09-06 | 更新于: 2026-02-16 | 分类于 c++
字数统计: | 阅读时长 ≈ 分钟

缘起

最近,在项目代码中看到一个非常神奇的类型转换—— 类型A 的指针居然能动态转换成另外一个完全没有任何关系的类指针。这…… 完全颠覆了我的认知。

为了进一步了解这个神奇的操作,我特意模拟了项目代码中的情形,一起来看看吧。

阅读全文 »

排错实战 | WindowsSdkDir 从何处来?

发表于 2020-08-23 | 更新于: 2026-02-16 | 分类于 排错
字数统计: | 阅读时长 ≈ 分钟

缘起

在《修复被破坏的 vs 工程设置》和《修复被破坏的 vs 工程设置(续)》这两篇文章中,分享了调查 VS 包含路径错误的问题,感兴趣的小伙伴儿可以查看。依稀记得在 2013 年的时候调查过类似的问题。前一阵子没翻到,这两天在翻笔记的时候居然意外的找到了。特整理分享给大家。

阅读全文 »

排错实战 | 在 tortoisegit 执行 commit 会跳过暂存区直接提交到仓库中吗?

发表于 2020-08-23 | 更新于: 2026-02-16 | 分类于 排错
字数统计: | 阅读时长 ≈ 分钟

缘起

之前与同事交流 git 时,简单介绍了 git shell 和 tortoisegit (戏称 小乌龟,tortoisesvn 操作极其相似)。

tortoisegit 的命令基本上与 git bash 中的命令一一对应。在 git bash 中提交变更到本地仓库需要先 git add 添加到暂存区,再通过 git commit 命令提交到仓库,但是在 tortoisegit 中可以使用 commit 命令 ”直接“ 提交到仓库。到底会不会经过暂存区呢? 我的理解是:会先添加到暂存区,然后再提交到仓库。到底是不是这样的呢?还是通过实验来观察。

阅读全文 »

排错实战 | 修复被破坏的 vs 工程设置(续)

发表于 2020-08-08 | 更新于: 2026-02-16 | 分类于 排错
字数统计: | 阅读时长 ≈ 分钟

缘起

在上一篇文章——《修复被破坏的 vs 工程设置》中,我分享了修复被破坏的 vs 工程设置的实战。本以为圆满解决了问题,没想到另有玄机。所以又来分享一篇刨根问底的文章。

阅读全文 »

排错实战 | 一次简单的服务器 cpu 占用率高的快速排查实战

发表于 2020-08-02 | 更新于: 2026-02-16 | 分类于 排错
字数统计: | 阅读时长 ≈ 分钟

前两天,朋友遇到一个线上 cpu 占用率很高的问题,我们俩一起快速定位并解决了这个问题。在征求朋友同意后,特发此文分享整个过程。本文以对话的形式展开,加上我的内心独白。文中对话与实际对话略有出入。

阅读全文 »

排错实战 | 修复被破坏的 vs 工程设置

发表于 2020-07-25 | 更新于: 2026-02-16 | 分类于 排错
字数统计: | 阅读时长 ≈ 分钟

缘起

前几天打开工作项目进行编译,没想到居然报错,明明前一天编译还正常的。简单排查后,临时修复了问题。但是今天新建工程时居然还有相同的问题,是可忍熟不可忍?本文记录了排查过程,希望对各位小伙伴儿有帮助。话不多说,上菜。

阅读全文 »

继续分享 5 个实用的 vs 调试技巧

发表于 2020-07-19 | 更新于: 2026-02-16 | 分类于 vs
字数统计: | 阅读时长 ≈ 分钟

前言

我在上一篇文章《5 个非常实用的 vs 调试技巧》 中分享了 5 个我认为非常值得了解的 vs 调试技巧,本周继续分享 5 个很基础但同样实用的调试技巧。

阅读全文 »

5 个非常实用的 vs 调试技巧

发表于 2020-07-12 | 更新于: 2026-02-16 | 分类于 vs
字数统计: | 阅读时长 ≈ 分钟

前言

调试是一项非常重要的技能,熟练掌握调试技巧有助于我们快速解决问题。vs 是我们平时编写代码时的首选工具,相信也是大多数小伙伴儿的首选调试工具,因为实际操作起来太方便了,代码编写完,一个 F5 就可以愉快的调试了。今天我想向大家推荐几个非常值得了解 vs 调试技巧。话不多说,我们开始吧。

阅读全文 »

调试技巧 | 你很可能需要知道这个调试小技巧

发表于 2020-06-27 | 更新于: 2026-02-16 | 分类于 调试
字数统计: | 阅读时长 ≈ 分钟

缘起

最近在调试的时候,需要观察第三方容器中每一个元素的值。默认情况下,vs 并不知道如何显示第三方容器的内容,只能手动观察容器中的每一个值,超级不方便。我找到一个非常给力的好办法,你还知道其它好办法吗?

阅读全文 »
1…456…8
BianChengNan

BianChengNan

147 日志
34 分类
238 标签
RSS
GitHub 知乎 博客园
© 2019 — 2026 BianChengNan | 全博客共 字
0%