排序
C/C++函数的调用约定详解
目录1、概述2、常见的调用约定说明2.1、__cdecl C调用2.2、__stdcall标准调用2.3、__fastcall快速调用2.4、__thiscall调用3、调用约定不一致导致的软件异常问题4、与调用约定相关的工程配置选项...
C++软件调试与异常排查从入门到精通系列汇总
🚀前言本文是C++软件调试与异常排查从入门到精通系列教程专栏的导航贴(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)。专栏介绍:根据近几年C++软件异常排查的实践与经验,系统地讲解了C+...
使用Windbg定位Windows C++程序中的内存泄露
目录1、概述2、使用Windbg监测内存泄露的一般步骤3、详解整个操作过程3.1、gflags.exe和umdh.exe介绍3.2、启动cmd命令行3.3、设置pdb符号库路径3.4、调用gflags设置启用udmh.exe的堆栈跟踪3.5、...
内存越界一定会导致程序崩溃吗?详解内存越界
目录1、什么是内存越界?1.1、对数组的读越界 1.2、执行strcpy时的写越界 1.3、执行memcpy时的写越界2、内存越界一定会导致程序崩溃吗?3、有两种情况的内存操作是必然会导致程序崩溃的3.1、...
巧用Visual Studio中的数据断点去排查C++内存越界问题
目录1、概述2、异常实例描述3、是底层的dll模块发生了崩溃4、上层的m_dwConnectSID变量值被篡改,导致传给底层dll模块的函数参数有问题5、给m_dwConnectSID变量设置数据断点,排查出问题6、总结...
几秒读懂C++虚函数调用的汇编代码实现
多态是C++中最重要的特性之一,对虚函数的调用在C++代码中是随处可见的。虚函数(代码段地址)被存放在虚函数表中,调用虚函数的流程是这样子的:先获取虚函数表的首地址,然后根据目标虚函数在...
排查C++软件异常的常见思路与方法(实战经验总结)
目录1、概述2、常见的异常排查思路与方法2.1、直接调试2.2、添加日志打印2.3、分块注释代码2.4、数据断点2.5、历史版本比对法2.6、Windbg静态分析dump文件2.7、Windbg动态调试2.8、使用IDA反汇...
将Windbg附加到软件进程上排查异常闪退的问题
目录1、问题背景2、将Windbg附加到进程上,发现软件发生异常时中断在DebugBreak接口上3、根据Windbg中显示的函数调用堆栈,查看Webrtc库的开源代码,发现是new失败了 4、malloc或new失败的可能...
Windows和Linux下排查C++软件异常的常用调试器与内存检测工具详细介绍
目录 1、引言 2、概述 3、Windows下常用调试器和分析工具 3.1、Visual Studio开发调试工具 3.2、Windbg调试器 3.3、Windows内存分析工具 4、Linux下常用调试器和工具 4.1、gcc编译调试工具 4.2...
从可变参数函数的调用引发异常崩溃一例引发的一些思考
使用va_list、va_start、va_arg和va_end这组宏实现的可变参函数,是在运行时动态从函数调用堆栈中依次解析出传入的各个可变参数的(解析出可变参数的栈内存地址,读出可变参数的值(读出可变参...
Windbg调试工具介绍
目录1、概述2、Windbg的使用3、Windbg版本4、Windbg的获取与安装Windbg是我们最常用的C++软件异常分析工具,也是最强大的分析工具之一,我们今天就来详细介绍一下Windbg的相关内容。1、概述 ...
IDA反汇编工具使用详解
目录1、IDA反汇编工具简介2、为什么需要IDA反汇编工具?3、IDA的安装4、IDA的使用5、查看发生异常时的汇编指令的上下文6、虚函数调用时的二次寻址7、函数调用时的栈分布以及栈回溯原理8、最后 ...