Windows调试相关简记 6
Sysinternals工具包 下载地址 VS VS远程调试 在VS安装的目录下,从Remote Debugger这个文件夹中,拿到x86或x64 在待调试环境中,管理员权限打开msvsmon.exe 无身份验证,允许任何用户进行调试 在调试环境中: 附加到进程 远程 选择连接模...
Sysinternals工具包 下载地址 VS VS远程调试 在VS安装的目录下,从Remote Debugger这个文件夹中,拿到x86或x64 在待调试环境中,管理员权限打开msvsmon.exe 无身份验证,允许任何用户进行调试 在调试环境中: 附加到进程 远程 选择连接模...
示例dump分析:空指针访问二 代码 分析步骤 !analyze -v 信息1 RAX 寄存器中存储了地址 0x00000000,导致 mov dword ptr [rax], 2Ah 指令尝试向内存地址 0 写入值 0x2A(十进制 42)时触发异常 在 Windows 系统中...
用户模式同步 Interlocked 系列函数 原理 通过 CPU 原子指令(如 LOCK XCHG)直接操作内存,无需进入内核态 场景 简单计数器(如引用计数) 无锁数据结构(如无锁队列) 特点 性能极高(无内核切换) 仅支持单个变量的原子操作,无法实现复杂同步 临界区(Cri...
创建动画 窗口 这个内容的设计是,作为一个组件存在(DLL),其他一个地方,会在比较早的时机统一调用这些插件的同名接口。 调用的时候会创建UI对象,并在这个UI对象的初始化里面,创建下面的窗口对象,并指定该对象位置,调用该对象初始化函数InitControls,设置该对象的可见与...
内核对象 系统会创建和处理的几种内核对象 访问令牌对象(access token) 事件对象 文件对象 文件映射对象 I/O完成端口对象 作业对象 邮件槽对象(mailslot) 互斥量对象 管道对象 进程对象 信号量对象 线程对象 可等待的计时器对象 线程池工厂对象 每个内核对...
示例代码 WinDbg分析 启动调试 编译并运行程序 使用VS编译生成test.exe,并双击运行 附加到进程 启动 WinDbg,选择 File > Attach to Process,找到并选择运行的死锁程序 暂停程序执行 在 WinDbg 中,点击工具栏上的暂停按钮 ...
消息循环 概述 ATL消息循环 h cpp 其他:Visual studio 相关 符合模式permissive 概述 /permissive-是 Visual Studio(从 VS 2017 版本开始引入)中的一个重要编译器选项,旨在让编译器遵循最新的 C++ 语言标准(C+...
通用 配置符号路径 目的 让WinDbg能够将内存地址翻译成可读的函数名,否则调用栈全是地址,无法分析 命令 识别 Dump 类型和架构 目的 确定是什么类型的dump(full dump? mini dump?) 32位还是64位程序 操作系统版本 是否是WOW64(64位系统...
获取 通过一个COM接口的方式获取到一个管理器对象 ThreadHelper 是一个抽象类,接口run是抽象的 start 作为抽象基类,实现了start 主要功能是创建了一个线程(是跨平台的实现), 然后创建了一个Helper,调用了run run里面开始往列表里放数据 wai...
示例dump分析:重复释放同一堆内存 代码 分析步骤 用windbg打开Dump 文件并加载符号 ctrl + s ctrl + p ctrl + i 自动分析崩溃原因 看到了相关异常信息如下 异常上下文解析: 可以看出,异常触发位置是:aet_breakpad_test!_fr...
搜索当前标签