2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > VS调试器 1 断点设置有技巧(转载)

VS调试器 1 断点设置有技巧(转载)

时间:2021-08-30 22:20:56

相关推荐

VS调试器 1 断点设置有技巧(转载)

VS调试器 1,断点设置有技巧:

1)设置条件断点,比如i==10,变量改变时断点;

2)如何让断点在指定的命中次数或者大于某个次数时触发呢?方法是设定几个断点的HitCount,右键单击断点,在弹出菜单中选择Hit Count;

3)When Hit,这个选项可以让我们在命中断点后做一些事情,包括输出一些内容,或者调用宏,比如输出一个程序中变量的值;

4)利用断点的Filter功能,比如我希望断点只有被机器名为yizhu的机器访问才能触发;

具体参见:一篇介绍VS调试断点技巧的文章

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 怎样使用远程调试

使用vs进行远程调试,详细的介绍参考:/kb/910448

简单的来说,

1)在被调试的机器上面运行Msvsmon.exe

2)在调试机器上面运行vs,并attach到远程机器的某个进程

3 注意事项

a. 设置好正确的权限

被调试机器和调试机器需要互相信任的权限(two-way)。如果两台机器在同一个workgroup,让两台机器拥有一个相同的账号和密码,然后以这个账号运行。如果两台机器在一个域里面,比较简单,Msvsmon可以设置权限。如果一台机器在domain里面,另外一台不在,同样是让两台机器拥有一个相同的账号和密码,然后以这个账号运行。

对于Windows XP要特别注意一下,设置匿名的访问权限才可以work , /kb/908099

b.设置好symbol

什么,你不知道什么是symbol?简单的来说,symbol file(*.pdb) is for source-level debugging. VS就是靠它来调试exe的。默认情况下debug版本生成的,而release版本不生成pdb.设置好 [Project proerties]-[C/C++]-[Debug Information Format]-Program Database就可以了。

为了减少symbol方面的麻烦,最简单的做法是让被调试机器上的binary版本和本地compile出来保持一致。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。