草庐IT

c++ - 如何调试意外终止的 win32 进程?

我有一个用C++编写的Windows应用程序,它偶尔会消失。我使用蒸发这个词是因为没有留下任何东西:没有来自Windows的“我们很抱歉”消息,没有来自Dr.Watson设施的故障转储......有一次崩溃发生在调试器下,调试器没有中断——它显示应用程序仍在运行。当我手动暂停执行时,我发现我的进程不再有任何线程。我如何捕捉此进程终止的原因? 最佳答案 您可以尝试使用windowsdebuggingtoolpackage中的adplus实用程序.adplus-crash-pyourprocessid自动转储工具为异常提供小型转储,并在

c++ - WOW64:从 32 位进程获取 x64 %CommonProgramFiles%

我尝试过的查询:ExpandEnvironmentStrings("%COMMONPROGRAMFILES%")、GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)。我的32位应用程序中的所有内容都解析为(通常)c:\\ProgramFiles(x86)\\CommonFiles。我需要检查(通常)安装在64位应用程序的c:\\ProgramFiles\\CommonFiles下的文件版本。 最佳答案 在64位操作系统上,ProgramW6432环境变量指向c:\programfiles。英文版Wi

c++ - 运行时检查失败 #0 从 kernel32.dll 加载 QueryFullProcessImageName

我有一个应用程序需要同时在WinXP和Vista64上运行。我的程序需要QueryFullProcessImageName()才能在Vista上运行,但不能在XP上运行。我尝试通过kernel32.dll加载QueryFullProcessImageName()(而不是静态链接),以便相同的可执行文件可以在WinXP和Vista上运行。加载它的代码是://onlygetscalledonvistaboolLoadQueryFullProcessImageName(){HMODULEhDLL=LoadLibrary("kernel32.dll");if(!hDLL)return(0);/

c++ - 是否有标准方法可以在编译时确定系统是 32 位还是 64 位?

我需要设置#ifdef-检查条件编译。我想自动执行该过程,但无法指定目标操作系统/机器。预编译器是否可以通过某种方式确定它是在32位还是64位上运行?(说明)我需要定义一个64位大小的类型。在64位操作系统上它是一个long,在大多数其他操作系统上它是一个longlong。我找到了thisanswer-这是正确的方法吗?[编辑]handyreferenceforcompilermacros 最佳答案 您唯一可以可靠地执行的编译检查是sizeof(void*)==8,对于x64为true,对于x86为false。这是一个constex

c++ - 我可以依赖 sizeof(uint32_t) == 4 吗?

我知道我可以依赖sizeof(char)==1,但是sizeof(uint32_t)和sizeof(uint8_t)呢??从名字猜大小不应该是32bit(8bit)吗?谢谢! 最佳答案 固定大小的类型总是恰好是那个大小。如果你在一些没有那种大小的整数类型的奇怪平台上,那么它们将是未定义的。请注意,如果CHAR_BIT!=8,则不一定遵循sizeof(uint32_t)==4;同样,这只发生在奇怪的平台上。 关于c++-我可以依赖sizeof(uint32_t)==4吗?,我们在Stack

【mcuclub】单片机-STM32F103C8T6

一、实物图二、原理图1、总电源电路一个type-c的插座,一个自锁按键、一个220uF的电解电容、一个1k的限流电阻和一个LED灯这个220uF的电解电容选取:为什么要:一是电源本身就有纹波,多加一个滤波电容更好,二是电源线有电阻,负载电流的变化会在该电阻上形成不同的电压降,进一步加大了电压的波动,因此每块电路板上都有电源滤波电容。负载电流越大,滤波电容容量也越大。至于选取多大的电容,一般是100-220uF。灯和限流电阻:当供电正常并且自锁按键按下时,灯会点亮,表明板子处于供电状态。2、晶振电路虽然单片机内部集成了晶振,但是单片机内部的晶振不准确,需要接入外部晶振。左边的8M晶振是高速外部时

C/C++ stm32基础知识超详细讲解(系统性学习day14)

目录前言一、ARM和STM32是什么?二、STM32的开发方式三、GPIO----寄存器开发方式1.八种输入输出模式分析2.寄存器 四、stm32芯片图片五、怎么学好stm32 总结前言stm32的广泛含义及背景:STM32是一款由意法半导体(ST)公司开发的32位微控制器,其全称是意法半导体32位系列微控制器芯片。STM32是基于Cortex-M内核的32位单片机,分为多个系列以满足不同应用场景的需求。STM32微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机,其诞生于20世纪70年代中期,经过多年的发展,其成本越来越低,性能越来越强大,应用已经无处不在,遍及各个领域。ST

基于STM32F1以及STM32CubeMx实现串口中断通讯(字符串发送与接收)

串口通讯的实现STM32CubeMx软件设置Keil软件及代码编写串口的功能设计主函数的编写效果实现STM32CubeMx软件设置首先选好自己的板子并打开软件设置,本实验基于STM32F103ZET6实现,打开软件后如图:打开外部高速晶振,然后接着配置时钟:将时钟频率修改为72MHz,接着设置接线方式为SW接下来需要使用串口中断通讯,打开我们的串口设置并打开中断这里波特率设置为115200,数据位为8位,无校验位,停止位为1位,通信模式设置为异步通信,以及可以接受及发送数据。接着打开中断,并设置抢占优先级和响应优先级,这里设置为0,0。至此STM32CubeMx就设置完成了。Keil软件及代码

STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED

今日继续学习使用 STM32F103C8T6开发板点亮一个LED灯,文章提供源码,测试工程,实验效果图,希望我的归纳总结会对大家有帮助~目录GPIO的认识与分类:引脚安排整理:定时器的引脚例举:串口的引脚例举: CAN串口通信:SPI通信:IIC通信: 其余引脚:烧录引脚: 相关库函数: 拉高、拉低输出: APB2外设RCC开启GPIO时钟:GPIO初始化函数:接线与GPIO的初始化:选择引脚: 接线与创建文件、文件路径添加:GPIO的初始化:所有代码贴出:测试效果展示:​编辑测试工程下载:GPIO的认识与分类: 首先看下这张表:它定义说明了STM32C8T6上所有48个引脚主功能、默认复用、

STM32-IAP基本原理及应用 | ICP、IAP程序下载流程 | 程序执行流程 | 配置IAP到STM32F4xxx

目录1.串口IAP介绍1.1STM32编程方式1.2STM32系列芯片系统存储器区域1.2.1STM32F40x/41x1.2.2STM32F42x/43x1.3STM32启动模式选择1.4ICP下载流程1.5IAP下载流程1.6一般的程序执行流程1.7加入IAP之后程序运行程序1.8STM32复位后如何跳转到main函数1.9IAP升级应用程序过程2.APP程序的生成步骤2.1设置APP程序的起始地址和存储空间大小(以FLASH为例)2.2中断向量表的偏移量设置方法2.3设置MDK编译后运行fromelf.exe,生成.bin文件.2.4测试程序1.串口IAP介绍1.1STM32编程方式①在