【转】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 ...
随机推荐
- FFmpeg 入门(7):Seeking
本文转自:FFmpeg 入门(7):Seeking | www.samirchen.com 处理 seek 命令 我们将为播放器添加 seek 的能力.这个过程中,我们会看到 av_seek_fram ...
- Ubuntu下dlib库编译安装
安装libboost 按照dlib的说明安装始终不成功,参考machine learning is fun作者的指导installing_dlib_on_macos_for_python.md,需要首 ...
- 20145319 return-to-libc攻击实验
20145319 Return-to-libc攻击实验 一 实验内容 return-to-libc实验是一个基于缓冲区溢出攻击实验的基础上的一种攻击实验 缓冲区溢出攻击相关知识: 原理:通过一段包含s ...
- Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)
描述 axes在当前窗口中创建一个包含默认属性坐标系 axes('PropertyName',propertyvalue,...)创建坐标系时,同时指定它的一些属性,没有指定的使用DefaultAxe ...
- hihocode 股票价格 优先队列+map
股票价格 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 小Hi最近在分析一支股票的价格走势,他需要一个程序来辅助分析.这个程序会接收3种消息(指令): 价格信息,格式是 ...
- linuxI/O重定向
假设有这么一段python3程序: import sys ")sys.stderr.write("stderr1 ") 现在想要把程序的输出以及错误信息都存在文件中. 一 ...
- Java回顾之网络通信
在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础是Socket,在TCP连接中,我们会使用ServerSocket和Soc ...
- 前端框架MVVM是什么(整理)
前端框架MVVM是什么(整理) 一.总结 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数 ...
- C# SQLite事务操作方法分析
本文实例讲述了C# SQLite事务操作方法.分享给大家供大家参考,具体如下: 在 C#中执行Sqlite数据库事务有两种方式:SQL代码和C#代码 1. SQL代码: BEGIN… COMMIT / ...
- UVA-1336 Fixing the Great Wall(区间DP)
题目大意:长城(视作x正半轴)有n处破损.有一个智能修复机器人,它的初始位置和移动速度已知.每处破损处都有一组参数(x,c,d),x表示位置,c.d表示在时间t后再修复该处破损的花费为d*t+c.求用 ...