【转】VC++10(VS2010)IDE各种使用技巧
原文网址:http://www.cnblogs.com/sunrisezhang/articles/2802397.html
一个好的coder,他首先必须是一个熟练工。对于C++程序员来说,只有掌握VC的IDE使用方法和技巧,才称得上是“C++”熟练工,让自己工作事半功倍。这里以VC 10.0 为例(VS2010)
对于VC++10来说,最好的代码辅助工具就是番茄插件 Tomato Visual Assitant,用它可以提高查看代码和编写代码的速度。
1.重构(Refactor)
使用重构时,要先将目标代码框选住,然后右键即可。当然也可以从菜单中选(下图)

目前用到的几个:
CreateDeclaration/Implementation:根据cpp实现代码在.h中给出相应声明/根据.h中声明创建.cpp中实现代码
Add Include:自动加上代码需要的头文件
Encapsulate Field:这个相当于Eclipse中的Generate Getters/Setters ,但是这里get和set用的是一个函数名进行这两种方式的重载。Eclipse中多用于创建JavaBeans(Pojo),VC++一样支持类似的做法
ExtractMethod:把一段代码导出成一个函数并对其进行调用。用于大段代码的分割。
Rename:对某个变量重命名
Tomato官网上有详细说明,不过都是英文的
2.自定制IDE和快捷键
这里大部分操作都在“工具->自定义”选项中。“工具栏”选项卡可以随意定制代码上方的工具栏。
“命令”选项卡可自己定制各种弹出菜单。“上下文菜单”主要是用于控制鼠标右键弹出的菜单。想添加的话点“添加命令”去找就是了
右下方“键盘”按钮用于控制各种快捷键。有些用着不是很方便的可以对其进行修改。如删除某行的命令,系统默认是“Ctrl+Shift+L”,不仅按起来麻烦,还可能和切换输入法冲突。我将其改成了“Ctrl+D”(Eclipse里面是这样的),效率高多了
其它常用命令:Alt+G——转到定义(如果是宏的话还是直接F12比较好)
3.各种插件的使用
VS中使用“插件管理器”进行控制。有经验的人会使用各种插件提高他们的效率
除了番茄插件是必备的利器外,值得一提的是IndentGuides,这个插件可以用虚线匹配大括号,在逻辑代码非常多时可以使你的代码看起来更清晰
另外著名的插件有Incredibuild,不过这个貌似只有VS2005有完全的破解版。联合编译工具,用起来非常爽,可以提高代码的编译速度(编译是会呼吸的痛啊......)
4.调试
主要快捷键:
F5(加断点时用)F7(跳出一层)F10(逐过程)F11(逐语句,和F7配合)
除了要会用这些外,对于一个C++程序员来说,更重要的是查看内存。

非常遗憾的是,这里仍有一些不够了解的地方。如反汇编和寄存器等,需要对汇编有一定的了解
调出内存模块,把变量地址粘贴到内存窗口上,可以查看这个内存对应的值情况:

如果变量包含汉字会看到“乱码”,不用怕,这是因为VS默认采用GB2312对汉字进行解码,但是却没有体现在内存窗口上的原因。这里只能解析ANSI字符。我们只需把其对应的编码按照GB2312映射表进行对照就可以找出对应的汉字了
另一个常用的窗口是“调用堆栈”,可以查看当前断点执行语句的调用关系,这里不多介绍了
大家看代码时常常会用断点跟进的办法对其进行追踪,以便了解它的执行过程,对于一段陌生的代码而言更是如此。以前每次加完断点后不用就丢弃了,以后想查看上次的追踪过程,就找不到了。解决办法是将加过的断点导出来保存之,以便日后查看。

对于引用了外部库的代码,如果想进行断点跟进,必须保证外部模块代码构建时生成了调试信息。建每个工程时这个都被设为了默认选项(“项目属性页->链接器->调试->生成调试信息”),生成.lib、.dll、.exe时,会生成相应的.pdb文件,如果没有这些.pdb文件,就没法在调试过程中进到相应的代码中去。
有时会出现虽然找得到对应模块.pdb文件,但是仍然无法断点跟进的情况,别急,我们选择“调试->窗口->模块”,调出“模块”窗口,哪些模块调试信息加载了哪些没加载自然一目了然了:

其中“符号状态”显示了对应模块是否被加载。如果某个模块显示的是“Cannot find...”,那么我们可以手动为其配置路径

这样就可以对该模块进行断点跟进了
另外要说明的是,即使这些都做了,有时仍然会出现断点进不去的现象。这时应检查工程加载的.lib和.dll版本是否一致,一次编译生成的对应.lib和.dll才是对应一致的版本。否则会找不到调试信息
5.查看和分析编译信息
学会分析编译信息是一个能充分体现“经验”的地方:因为很多编译错误往往指向的不是错误本身发生的地方,很多时候提示信息往往莫名其妙。这时就需要程序员有一定的经验,来排除错误可能发生的原因。譬如你的class结尾没有加“;”,那么编译器可能不会告诉你少加了“;”,而是提示你一个看似不相关的信息,让你晕头转向,呵呵(这是我曾经遇到的一个问题)。再如STL相关的编译错误提示,等等
另一个需要说明的地方是:很多时候我们习惯了使用现成的东西,而不愿去追究它的细节。在问题比较繁重的时候,我们会忽略一些问题,减轻我们的负担,但是如果你有富裕的时间,静下心来钻研一下,是很有收获的,而且我相信不是每个程序员都愿意这么做。
一个比较让我印象深刻的例子是:在我把一个以前编译好的工程,转移到另一台机器上时,编译环境发生变化,而我的VS也不能正确编译了。最后是改了两个地方:一个是修改了全部的路径(建议在一开始编译的时候,用相对路径“../”,不要用绝对路径。而且这里要使用一些诸如NotePad++这样的工具,不然会累死的……),另一个是修改了编译器所在路径……Visual Studio为我们做了太多太多,以至于我们不清楚编译的具体过程。当你使用过Linux后,你就会明白,用Visual Studio开发Windows程序是非常幸福的。
解决第二个问题的途径是这样的:打开 “工具”→“选项”→“项目和解决方案”→“生成并运行”→“MS Build项目生成输出详细信息”,修改输出级别为“详细”,这时发现了编译器 cmake.exe 的路径错误,于是我用NotePad++打开了所有.vcxproj文件,替换了所有路径,重新打开,编译通过。

观察你的编译提示信息,即使对于警告也不要轻易放过,因为警告也可能导致一些严重的运行时错误。如“代码936...”这样的问题(往往是由于文件的代码页不正确,用UE等工具把格式修改为VS所能识别的文字编码格式就好了,或者直接在VS中创建新文件)
可在“项目”→“属性”→“配置属性”→“C/C++”→“常规”中,自己调整警告级别,或是将警告视作错误

【转】VC++10(VS2010)IDE各种使用技巧的更多相关文章
- 10个CSS简写/优化技巧-摘自网友
10个CSS简写/优化技巧23来源/作者:未知 类别:前端开发 字体大小:大|中|小 背景颜色:蓝|白|灰 ? ? CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CS ...
- 【前端】javascript中10常用的个小技巧总结
javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了 ...
- Guitar Pro的10个非常实用的技巧(下)
Guitar Pro 7具有许多功能和编辑选项,只需点击几下即可随时创建与编辑我们的乐谱,.以下就为大家介绍10个Guitar Pro中实用的技巧,可以大大的节省我们的时间. 上次在<Guita ...
- VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案
本篇文章转自 CSDN blog,转载请注明出处! 原文地址: http://blog.csdn.net/liquanhai/article/details/6618300 引子:竟然可以用Code: ...
- Opencv 2.4.10 +VS2010 项目配置记录
http://blog.csdn.net/scottly1/article/details/40978625?utm_source=tuicool 因为工作需要,小小的研究一下Opencv的图像处理, ...
- VS2010中的调试技巧
作者: scottgu 这是我的博客中关于VS 2010和.NET 4发布系列的第二十六篇文章. 今天的博文将介绍Visual Studio中的一些实用调试技巧.这是受我朋友Scott Cate (他 ...
- OpenCV2.4.10 + VS2010开发环境配置
原文转载自:qinyang8513 一.开发环境 1.操作系统:Windows 7(64位) 2.编程环境:Microsoft Visual Studio 2010 3.OpenCV版本:2.4.10 ...
- 10个调试Java的技巧
调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...
- FLTK 1.1.10 VS2010 Configuration 配置
Download FLTK 1.1.10 at here. Download VS2010 Download CMake 2.8.12 I assume you've already installe ...
随机推荐
- react 修改循环列表的当前单个子项状态:思路 拿原始state数据更改,再做请求
handleLike(item,index){ var id = item.id; _ENV.post( _ENV.HOST+'/communion/video-up', {'user_id':loc ...
- Java与Flex学习笔记(20)---将flex页面嵌入到jsp页面中
如果我们只需要用到Flex的一部分功能,例如播放器功能,我们可以单独把Flex页面嵌入到Jsp页面中.要想实现此功能,需要下载一个工程,将其覆盖在服务器根目录下即可.你可以在次下载:FlexModul ...
- Linux学习笔记之Centos7设置Linux静态IP
***如下资料源自互联网*** 这里以CentOS 7系列为例设置静态IP,原来RedHat系列的Linux发行版可以通过setup工具方便的设置静态IP,但是在版本7之后setup工具的功能就逐渐减 ...
- Android Studio安装与使用
2013年谷歌推出android studio后,单独支持android开发,这是基于Java语言集成开发环境IntelliJ搭建的IDE.特别在android studio1.0稳定版出来后,谷歌将 ...
- 学习Zookeeper之第3章Zookeeper内部原理
第 3 章 Zookeeper 内部原理 3.1 选举机制 3.2 节点类型 3.3 stat 结构体 3.4 监听器原理 1)监听原理详解 2)常见的监听 3.5 写数据流程 第 3 章 Z ...
- ubuntu 18.04 64bit没有声音如何解决
一.背景 1.1 笔者的机器有两张声卡,使用aplay -l可以列举出来,一张是内置声卡,另一张是显卡自带的声卡,说明声卡驱动是ok的 1.2 笔者是在浏览器中播放视频无声音 二.尝试 2.1 尝试使 ...
- @Bean 生命周期
bean生命周期: 实例bean 1.当调用者通过getBean(beanName)向容器请求某一个Bean时,如果容器注册了org.springframework.beans.factory.con ...
- JAVA基础之复识一
JAVA不单是一门计算机编程语言,而且还是一种基于WEB的全方位软件开发技术, java特定运行平台及关键特点 java开发工具包的安装,配置与应用 java语言的基本概念 java面向对象编程 ja ...
- Codeforces Round #319 (Div. 2) B. Modulo Sum 抽屉原理+01背包
B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- python 列表的递归求和
def list_sum(num_List): : ] else: ] + list_sum(num_List[:]) print(list_sum([, , , , ]))