drwtsn32

news/2024/11/30 20:42:12/

一直忙着调试代码,写服务器的代码,有时候真叫人郁闷,郁闷的是要高性能的保持程序继续运行n多天还没有事情,本来这也是程序员该做的事情,但是有时候一些长期积累下来的问题会造成程序指明性的打击~~~

在写这个程序的时候,本机调试代码的时候都没有遇到任何内存泄漏的问题,调试的时候都很清晰,但是到客户那里运行一天到两天就没名的挂掉,真让人郁闷

而且没有任何报错~~无奈,

打开了drwtsn32来检测程序的运行报错情况

drwtsn32是windows调试的利器,调试不常见错误的程序的时候,累积错误的时候,都可以用它.

在命令行窗口,输入drwtsn32

然后就可以看到drwtsn32的运行界面

然后设置"转存到符号表"

"转储全部线程上下文"会在出错的时候把程序运行的上下文都记录下来,如果只想知道出错那个地方的记录,就不要选这个,看起来方便很多

然后确定保存这些信息

相应的windows程序生成的时候,也得做一些改动,要生成map文件,这样好找到出问题的代码地方

vc设置:
1、配置属性-〉c/c++-〉常规-〉调试信息格式,  选择“程序数据库(/Zi)”
2、配置属性-〉c/c++-〉优化,选择“禁用(/Od)”
3、配置属性-〉连接器-〉调试-〉生成调试信息,选择 “是(/DEBUG)”
4、配置属性-〉连接器-〉调试-〉生成影射文件,选择 “是(/MAP)”
5、配置属性-〉连接器-〉调试-〉影射文件名,选择“$(OutDir)/$(ProjectName).map”
6、配置属性-〉连接器-〉调试-〉影射导出,选择“是(/MAPINFO:EXPORTS)”
7、配置属性-〉连接器-〉调试-〉影射行,选择“是(/MAPINFO:LINES)”
8、配置属性-〉连接器-〉高级->固定基址,选择“生成重定位节(/FIXED:NO)”

然后命令行运行drwtsn32

等待程序出错~~

程序出错以后会把log和一个dmp文件存储到故障转存 和日志文件路径 那个目录下面,这个目录可以自己设置.

 

在log信息里面有这样的信息

Microsoft (R) Windows 2000 (TM) Version 5.00 DrWtsn32
Copyright (C) 1985-1999 Microsoft Corp. All rights reserved.

 

发生应用程序意外错误:
        应用程序:  (pid=1248)
        时间: 2006-4-27 @ 09:49:29.613
        意外情况编号: c0000005 (访问侵犯)

*----> 系统信息 <----*
        计算机名: F6B2548C83754CF
        用户名: Administrator
        处理器数量: 1
        处理器类型: x86 Family 6 Model 8 Stepping 6

…………


        0041e6bb 8b45e0           mov     eax,[ebp+0xe0]         ss:00d9907e=????????
错误 ->0041e6be 8b500c           mov     edx,[eax+0xc]          ds:00c69ee6=????????
        0041e6c1 52               push    edx
        0041e6c2 ff1518af4300     call    dword ptr [0043af18]   ds:0043af18=7c177c00

…………………………

很多信息

然后对应的去找你vc 生成的map文件的地方~~

找到代码出现那样情况的地方~~

~~~然后让你的程序VC调试,反汇编,找到对应的地方~~

 

ps:这只是一种最简单的方法:)

更多的方法,看《windows程序调试》

 

http://www.ppmy.cn/news/363259.html

相关文章

drwtsn32简介

前言&#xff1a;对于Debug模式程序的调试&#xff0c;大家都比较熟悉。但对于Release模式下程序异常崩溃&#xff0c;很多程序员束手无策。其实&#xff0c;Release模式的发布程序&#xff0c;通过一些方法也可以获取程序崩溃时的堆栈信息&#xff0c;并可以生成Dump文件。此后…

Arduino模块化编程

当用Arduino做复杂工程项目时&#xff0c;程序难免会变得很大。这时候要修改个别参数或函数的时候会变得麻烦&#xff0c;简而言之&#xff0c;项目程序管理难度增高了&#xff0c;程序代码维护会变得困难。这时候&#xff0c;就产生了将一个ino文件分解成多个功能相对独立的源…

批量压缩和修复Access数据库 Batch Access Database Compactor Crack

批量压缩和修复Access数据库 Batch Access Database Compactor 快速压缩和修复访问数据库。它是一个批处理Access数据库压缩程序&#xff0c;可以在不安装Office的情况下压缩和修复Access数据库。 Batch Access数据库压缩程序是一种软件工具&#xff0c;正如其标题所示&#x…

Qt学习之旅 - QTableWidget控件其他控件设置图标

文章目录 设置列数设置水平表头设置行数设置正文设置QTableWidget表格不可被选中、不可编辑设置表格中某个单元格不可被选中 防止越界int转QString其他控件Scroll Area按键 添加UI设置图标主窗口图标状态栏上显示图标使用QtCreator //QTableWidget控件 //设置列数 ui->table…

xlnx 官方 镜像升级代码

组合 固件分析 yyds // SPDX-License-Identifier: MIT /** Xilinx Zynq MPSoC Firmware layer** Copyright (C) 2021 Xilinx, Inc.** Vikram Sreenivasa Batchali <bvikramxilinx.com>*/#include <fcntl.h> #include <mtd/mtd-user.h> #include <stdio.…

什么是原型设计?入门最全讲解指南

原型设计在产品开发和用户体验领域扮演着至关重要的角色&#xff0c;产品经理通过画产品原型图&#xff0c;可以让需求可视化&#xff0c;进而快速测试和验证产品可行性&#xff0c;为后续推动产品研发提供坚实可靠的依据。 本文将深入探讨什么是原型设计&#xff0c;原型设计…

Unity 安装负责音频的 wwise

很多游戏的音频用的是 wwise 先下载 https://www.audiokinetic.com/zh/download 安装的时候要选sdk 就是20g的那个 然后运行 选择unity 可以看到这个界面 好&#xff0c;现在开始要安装离线包 直接项目里点 第二个 装好后 他会提示你 无法找到unity安装的地址 1 打开你的 …

第八章实验题汇总

7-1 求一年中的天数 实验八 结构体与其他构造类型 一、实验目的 掌握结构体变量的定义和引用。掌握结构体数组和结构体指针的使用。培养使用结构体解决实际问题的能力。 二、实验内容 1、编写程序&#xff0c;在主函数中输入年月日&#xff0c;利用days函数计算该天是本年…