已经使用了很久的VS,VS有一些技巧还是很让人惊艳的。在这里做一些个人总结的小技巧。
1、有时候会遇到error MSB****,CL.exe已退出的错误
可以在菜单栏【工具】---【选项】---【项目与解决方案】---【生成并运行】,选择【msbuild项目生成详细信息】选项。下拉列表中有
选择详细,能给出更多详细的编译问题,很有用。
2、数据断点的设置。
断点时调试的基础,断点的类型也很多。这里说一个不是常用的方式的断点。在断点的选项下,选择新建数据断点。
然后输入你感兴趣的数据内存。当内存改变时,就会触发断点。
当我们在调试的时候,有些数据发生莫名其妙的变化,这个时候数据断点就是调试的利器。
3、调试时的暂停(全部中断)
我们调试的时候,经常会遇到程序跑死或者不知道跑到什么地方去了。经常有可能是产生异常或者思索
这个时候我们点击全部中断,过一会就可以通过查看调用堆栈来分析,程序刚刚怎么运行的,已经程序为什么卡死在这儿。
4、断点管理。
有的时候调试断点特别多,可以根据功能将断点分类,在搜索栏里查找相应的断点或者多个断点
5、线程窗口。
vs下调试多线程还可以看见线程调用栈,这样就更能深刻的了解程序。
6、运行时刻更改变量的值。
调试程序时,有时候发现某个变量不是自己预想的值,或者遇到多个条件的情况下,可以直接查看变量的值,或者在局部变量的窗口中直接改变变量的值。
7、设置下一条运行语句。
直接拖拽执行的黄色箭头,把箭头放在要执行的语句那一行。特别是当自己运行过去了,这个就是运行时的后悔药!可以直接拖回去,然后重新运行。当然要注意这个时候有些变量的值已经改变了,执行结果可能改变,需要自己手动改变量来干预执行结果。
8.常用的快捷键
ctr + w 选择整个单词
alt 使用列模式
9.异常调试
由于c++的异常机制,经常调用堆栈不返回,这样的错误多数是异常导致函数跳转失败。这个功能可以在调试菜单下的异常中设置具体的异常来使发生异常时暂停。
在Release版本请的下。调试信息是不对的。可以通过查看寄存器的方式来验证变量是否正确。
10.有线程不退出或者进程在资源管理器中不退出
多数情况是由线程死锁造成的。
11.库加载后又卸载
可能是动态库循环依赖造成的
12.链接问题
全局变量在头文件多次包含产生链接重复问题。
在win下可以通过链接器-常规-显示进度查看链接库的具体目录。
在Linux下也有相同的功能,在makefile中加入 -Wl,--verbose查看具体链接的库
13、刚刚编译的软件调试提示:当前不会命中断点,源代码与原始版本不同
- 常见的可能是源代码不匹配。可以直接在工具-选项-调试-要求源文件与源代码版本完全匹配去掉
- 自己刚刚编译的还是会有这种问题,还有一种原因是(自己拷贝错误就默默打脸)源文件的格式不对,可以通过重新格式化对应的源文件来解决。重新格式化在编译——高级-设置选定的内容格式
14、vs中查看内存分布
C/C++命令行,在其他选项加上/d1 reportAllClassLayout