【转】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 ...
随机推荐
- STM32组合设备实现USB转双串口
USB转双串口,核心技术就在于组合设备(USB Composite)的实现,组合设备的实现,其核心技术在于描述符的实现,下面我们先给出描述符:设备描述符 [C] 纯文本查看 复制代码 ? 00001 ...
- 基于ARM、linux的MF RC522射频读卡器
摘要:本设计将ARM.linux的嵌入式技术与RFID技术相结合,对于实现移动支付终端的低功耗.便携式和网络化具有特别的意义.首先是采用MF RC522芯片设计与制作读写器,实现对Mifare卡的读写 ...
- ExtJS发送POST请求 参数格式为JSON
背景 这要从我比较懒说起.技术框架ExtJS + resteasy,默认请求方式是ajax get,这后台方法就要写很多@QueryParam来获取参数.我比较喜欢前台用ajax post请求,后台方 ...
- CodeForces 828C String Reconstruction(并查集思想)
题意:给你n个串,给你每个串在总串中开始的每个位置,问你最小字典序总串. 思路:显然这道题有很多重复填涂的地方,那么这里的时间花费就会特别高. 我们维护一个并查集fa,用fa[i]记录从第i位置开始第 ...
- 如何识别网页类型(wap页面还是wise页面)
思路很简单,就是通过网页结构的一些特征来区分,当然也可以通过url的格式来区分,不过这个错误率较高,因为有很多小网站的url设计不规范. 网页特征包括两大类: 1.meta信息: 一般wap页面都会为 ...
- springboot p6spy 打印完整sql
调试时打印出sql的需求,太正常不过了,mybatis也提供了这样的功能: mybatis: configuration: log-impl: org.apache.ibatis.logging.st ...
- R:reshape2包中的melt
melt()函数melt为熔化.溶解的意思,此处可理解为扔进去一个东西,出来另外一个本质一样但形状不一样的东西.语法结构:melt(data, ..., na.rm = FALSE, value.na ...
- Ubuntu server 禁止显示器休眠
Linux不让显示器休眠的方法 # setterm -blank # setterm -blank n (n为等待时间)
- apache配置文件详解与优化
apache配置文件详解与优化 一.总结 一句话总结:结合apache配置文件中的英文说明和配置详解一起看 1.apache模块配置用的什么标签? IfModule 例如: <IfModule ...
- SpringMVC中的参数绑定总结
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...