调试技巧(154)

自从在153文章的认识后,自己要好好熟悉下那个工具

调试篇

1、运行中,就直接调试改变(以前一直用的是悬浮时看值,都不敢改值)

2、黄色箭头的使用(首先可以上拉和下拉)
上拉:假如我有一句看漏了想在看一遍,直接上拉,拉回到某个地方,再继续F10,编译器又会继续走的;
下拉:假如我中间有一句不想执行,想直接跳过,下拉超过那一句便好!!!

3、编辑后继续执行
这个的话,vs2008我试了下是会重新编译的;vs2013也分情况,但是这个功能依旧要自己使用。

4、监听窗口伪变量;如:当前error的值。一般窗口运行错误的时候,我以前的做法是用getlasterror来赋值。然而监视窗口却有个值可以直接获取到的

最后提下:

$tid—–当前线程的线程ID

$pid——进程ID

$cmdline———-启动程序的命令行字符串

$user———-正在运行程序的账户信息

$registername—–显示寄存器registername 的内容

不管怎么样,关于最后一个错误的伪变量是非常有用的:



$err——–显示最后一个错误的错误码

$err,hr—显示最后一个错误的错误信息



5、多线程调试,这个暂时不说,我那点贫瘠的多线程调试也写不多,希望以后能补充上
http://blog.jobbole.com/45447/

6、条件断点 我暂时也就只会一些简单的条件语法



7、使用命令窗口来测试函数有效性

比如,有个time_t的变量(它当然是个int),要看它的时间格式,就可以用这个来

8、自定义中断,这个我感觉还用不上,跳过了

9、远程调试
先去IDE的 Common7\IDE\Remote Debugger,找到合适的64位或32位工具。直接复制到远程机器上;远程机器运行后设置允许任何人连接。如此,本地通过附加进程的方式可以远程调试。

10、调试时数据信息格式化

想要改变显示类型可在变量前加以下前缀:

by –unsigned char (又称为unsigned byte)

wo – unsigned shot(又称为 unsigned word)

dw – unsigned long(又称为 unsigned double word)

要改变显示的进制数在变量前加下列前缀:

d 或者 i– 有符号十进制数

u – 无符号十进制数

o - 无符号八进制数

x – 小写十六进制数

X – 大写十六进制数

字符串的格式化

mb 或者 m – 十六进制显示的16字节数据,后跟16个ASCII 字符

mw – 8 words

md – 4 double words

mq - 2 quad-words

ma – 64个ASCII字符

mu – 2字节的UNICODE字符

有趣的快捷键

1、同名跳转
vs对双击的变量和函数等,会高亮当前文档的所有;以前我一般用 ctrl + f来一个一个跳转翻看。今天发现可以ctrl + shift + 上箭头/下箭头来跳转翻看。





2、自动生成类 当然,你写个clas +名 vs会自动给你生成类。我说的是没有声明的情况下。
当写到某句时,我想新建一个类,又不想跳过去一个一个新建说明;
直接 ctrl+shirft+c就新建好了

其它

1、有一段时间我的vs全是16进制的,解决方法:随便弄个调试窗口出来,右键调试窗口,把选中的16进制显示 取消掉


2、实时监控的时候,可以把某个变量某个值 的监控钉在编辑框上



3、查看某个函数被哪些函数调用过,选中,右键.查看调用层次结构(view call Hierarchy)

::OutputDebugString(_T(“debug information!”));

// //