VS2005调试器 1,断点设置有技巧(转载)
VS2005调试器 1,断点设置有技巧:
1)设置条件断点,比如i==10,变量改变时断点;
2)如何让断点在指定的命中次数或者大于某个次数时触发呢?方法是设定几个断点的HitCount,右键单击断点,在弹出菜单中选择Hit Count;
3)When Hit,这个选项可以让我们在命中断点后做一些事情,包括输出一些内容,或者调用宏,比如输出一个程序中变量的值;
4)利用断点的Filter功能,比如我希望断点只有被机器名为yizhu的机器访问才能触发;
具体参见:一篇介绍VS2005调试断点技巧的文章
2. 怎样判断加载的dll的正确性?
调试时,打开Debug->Window->Modules,在窗口中显示的就是当前进程加载的所有dll及其详细信息,如果
断点无法击中,可以检查这里,看是否有匹配的pdb文件或者是加载了错误的dll
3. 已经开始调试的工程加入另外的进程并且调试
如果你在调试客户端,但是服务器需要调试,那么使用菜单中的Tools-> Attach to process进行进程挂接,这种方法可以挂接所有windows下的程序,能否调试,就看其是否调试版和有调试用的PDB文件
4. 同时启动多进程进行调试
在Solution的属性中的Common Properties->Startup Project。选择Multiple startup projects。这个选项是可以记忆的,下次打开可以直接调试,非常方便
5.调试Windows Service
MSDN推荐的方法
1、调试windows服务的初始化、启动
另写一个程序控制服务的初始化和启动
注意:OnStart里写Log, OnStart里要在30秒返回. 不然启动就失败了! 所以OnStart里不要放太多代码! 可以用异步或线程.
2、调试windows服务的其他方面
1 ) 安装您的服务 : intallutils xx.exe
2) 可从“服务控制管理器”、“服务器资源管理器”或代码启动服务
3) vs: 设置相关断点,启动调试,再在工具栏中选择 调试->附加到进程..., 选择您的服务, 确定。
3、trace方法
1)添加调试方法
private static void DebugRun(string[] args)
2)改写程序入口为如下:
public static void Main(string[] args)
{
#if DEBUG
DebugRun(args);
#else
/*
初始化服务
*/
#endif
}
3)加入2种调试代码
EventLog.WriteEntry("...");
System.Diagnostics.Debug.WriteLine("...");
6,远程调试技术
顾名思义,就是要调试的程序和调试器本身并不在一台机器上。由于虚拟机技术的盛行,在虚拟机里面运行待调试的程序,而在外面运行调试器,也是一种比较流行的做法。
1 为什么使用远程调试
远程调试有如下好处:
a. 能让产品运行在一个比较干净的环境。有的时候如果产品安装在一个装好集成环境的机器上,某些bug并不能显示出来。
b. 易于部署调试环境。很多产品都非常复杂,比如很多都以service方式运行或者要load很复杂的resource,想在调试器里面直接按F5运行,越来越难。
c. 对于游戏等全屏方式运行的程序,尤其有用。以前我对调试directx程序非常头疼。
2 怎样使用远程调试
使用vs2005进行远程调试,详细的介绍参考:http://support.microsoft.com/kb/910448
简单的来说,
1)在被调试的机器上面运行Msvsmon.exe
2)在调试机器上面运行vs2005,并attach到远程机器的某个进程
3 注意事项
a. 设置好正确的权限
被调试机器和调试机器需要互相信任的权限(two-way)。如果两台机器在同一个workgroup,让两台机器拥有一个相同的账号和密码,然后以这个账号运行。如果两台机器在一个域里面,比较简单,Msvsmon可以设置权限。如果一台机器在domain里面,另外一台不在,同样是让两台机器拥有一个相同的账号和密码,然后以这个账号运行。
对于Windows XP要特别注意一下,设置匿名的访问权限才可以work , http://support.microsoft.com/kb/908099
b.设置好symbol
什么,你不知道什么是symbol?简单的来说,symbol file(*.pdb) is for source-level debugging. VS2005就是靠它来调试exe的。默认情况下debug版本生成的,而release版本不生成pdb.设置好 [Project proerties]-[C/C++]-[Debug Information Format]-Program Database就可以了。
为了减少symbol方面的麻烦,最简单的做法是让被调试机器上的binary版本和本地compile出来保持一致。
转载于:https://www.cnblogs.com/haii714/archive/2011/03/15/1985491.html
VS2005调试器 1,断点设置有技巧(转载)相关推荐
- 【Android 逆向】代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )
文章目录 一.代码调试器功能简介 二.Attach 进程 一.代码调试器功能简介 代码调试器功能 : 设置断点 : 无论什么类型的调试器 , 都必须可以设置断点 , 运行到断点处 , 挂起被调试进程 ...
- 启动VS2005调试器时出错: 绑定句柄无效
用VS2005新建了一个WINDOWS应用,运行F5就出现"试图运行项目时出错:无法启用调试.绑定句柄无效." 解决方法如下 将工程属性->调试->启用VISUAL S ...
- 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )
文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...
- 谷歌浏览器bug调试快捷键_Bug压榨初学者指南:如何使用调试器和其他工具查找和修复Bug
谷歌浏览器bug调试快捷键 As web developers, it often feels like we spend more time fixing bugs and trying to so ...
- ARM Cortex-M 调试器 - 基础知识
文章目录 前言 Processor memory map 内核寄存器 SFR(特殊功能寄存器) 0xE000E000-0xE000ED8F (CPUID/AIRCR) 0xE000EF00-0xE00 ...
- W801单片机学习笔记——调试器的配置与使用(适用于W801和W806)
1.前言 在以往的Cortex-M内核单片机的开发中,最离不开的一个东西就是调试器,什么J-Link,ST-Link,DAP-Link等等,没了他们调试程序感觉浑身难受,效率直线下降.调试器就好比是战 ...
- Ollydbg之断点设置
目录 预备知识 1.断点 2.INT3断点 3.内存断点 4.硬件断点 实验目的 实验环境 实验内容和步骤 1.熟练使用OD设置INT3断点 2.了解使用OD设置内存断点 3.了解使用OD设置硬件断点 ...
- linux如何调试elf程序,开发一个Linux调试器就需要了解ELF和DWARF
到目前为止,可能你已经听到了关于调试信息或者关于除了解析代码以外的理解源代码的方法的DWARF的只言片语.今天,我们将介绍源代码级的调试信息的细节,以备在该系列的余下部分使用它. ELF和DWARF简 ...
- 【瑞萨RA4系列】硬件调试器烧录和调试指南
[瑞萨RA4系列]硬件调试器烧录和调试指南 文章目录 [瑞萨RA4系列]硬件调试器烧录和调试指南 一.背景简介 二.连接调试器 三.设置Keil项目 四.烧录和调试 4.1 Keil中烧录 4.2 K ...
最新文章
- python进程的注意点(进程之间不共享全局变量、主进程会等待所有的子进程执行结束再结束)
- BCH未来发展的支柱是什么
- update与merge
- Win7 一键获得管理所有权限(最高权限)注册表
- c++ vector 赋值_C++中vector用法
- python 向量元素判断_python;计算向量的元素
- (android实战)Service 生命周期和使用注意项
- C# 对get和set的理解
- 一些图形学中的数学应用
- RBAC权限模型及数据权限扩展的实践
- H5脱离微信通过调起微信客户端支付
- 全议程来啦!2021数据技术嘉年华,我们周四线上见!
- RTSP客户端模拟器(TCP方式,Python实现)
- 第八章 OGRE中合成器(也就是传说中的image-based rendering)以及如何在OGRE中对着色器的uniform变量传值
- 堆排序(heap sort)
- pdf转图片文字丢失,字体映射替换
- VS2005中远程调试的配置方法
- vmware使用显卡 | vmware切换显卡 | vmware显卡配置
- 树莓派Zero 2 W的自带WiFi性能测试,仅40Mbps左右
- 转载的硬件十万个为什么
热门文章
- Linux C代码实现读取配置文件示例
- coreboot学习1:编译并使用qemu模拟
- 【无标题】Kafka副本管理—— 为何去掉replica.lag.max.messages参数
- 【FLink】Flink 消费 kafka 消费组 死掉 Marking the coordinator dead for group 造成数据重复消费
- 【Elasticsearch】估算在 Elasticsearch 中存储文档的成本
- 【kafka】消费组 死掉 kafka Marking the coordinator dead for group
- 【Kylin】60-20-040-集成-Kylin集成LDAP
- 【Spark】大数据+AI mettup【视频笔记】从lambda到HSAP实时数仓的演进 机器学习易用性
- 95-120-046-源码-Cluster-YarnSessionClusterEntrypoint
- SpringBoot:@ConfigurationProperties注解使用与源码