原文网址: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各种使用技巧的更多相关文章

  1. 10个CSS简写/优化技巧-摘自网友

    10个CSS简写/优化技巧23来源/作者:未知 类别:前端开发 字体大小:大|中|小 背景颜色:蓝|白|灰 ? ? CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CS ...

  2. 【前端】javascript中10常用的个小技巧总结

    javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了 ...

  3. Guitar Pro的10个非常实用的技巧(下)

    Guitar Pro 7具有许多功能和编辑选项,只需点击几下即可随时创建与编辑我们的乐谱,.以下就为大家介绍10个Guitar Pro中实用的技巧,可以大大的节省我们的时间. 上次在<Guita ...

  4. VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案

    本篇文章转自 CSDN blog,转载请注明出处! 原文地址: http://blog.csdn.net/liquanhai/article/details/6618300 引子:竟然可以用Code: ...

  5. Opencv 2.4.10 +VS2010 项目配置记录

    http://blog.csdn.net/scottly1/article/details/40978625?utm_source=tuicool 因为工作需要,小小的研究一下Opencv的图像处理, ...

  6. VS2010中的调试技巧

    作者: scottgu 这是我的博客中关于VS 2010和.NET 4发布系列的第二十六篇文章. 今天的博文将介绍Visual Studio中的一些实用调试技巧.这是受我朋友Scott Cate (他 ...

  7. OpenCV2.4.10 + VS2010开发环境配置

    原文转载自:qinyang8513 一.开发环境 1.操作系统:Windows 7(64位) 2.编程环境:Microsoft Visual Studio 2010 3.OpenCV版本:2.4.10 ...

  8. 10个调试Java的技巧

    调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...

  9. 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 ...

随机推荐

  1. FFmpeg 入门(7):Seeking

    本文转自:FFmpeg 入门(7):Seeking | www.samirchen.com 处理 seek 命令 我们将为播放器添加 seek 的能力.这个过程中,我们会看到 av_seek_fram ...

  2. Ubuntu下dlib库编译安装

    安装libboost 按照dlib的说明安装始终不成功,参考machine learning is fun作者的指导installing_dlib_on_macos_for_python.md,需要首 ...

  3. 20145319 return-to-libc攻击实验

    20145319 Return-to-libc攻击实验 一 实验内容 return-to-libc实验是一个基于缓冲区溢出攻击实验的基础上的一种攻击实验 缓冲区溢出攻击相关知识: 原理:通过一段包含s ...

  4. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

    描述 axes在当前窗口中创建一个包含默认属性坐标系 axes('PropertyName',propertyvalue,...)创建坐标系时,同时指定它的一些属性,没有指定的使用DefaultAxe ...

  5. hihocode 股票价格 优先队列+map

    股票价格 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 小Hi最近在分析一支股票的价格走势,他需要一个程序来辅助分析.这个程序会接收3种消息(指令): 价格信息,格式是 ...

  6. linuxI/O重定向

    假设有这么一段python3程序: import sys ")sys.stderr.write("stderr1 ") 现在想要把程序的输出以及错误信息都存在文件中. 一 ...

  7. Java回顾之网络通信

    在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础是Socket,在TCP连接中,我们会使用ServerSocket和Soc ...

  8. 前端框架MVVM是什么(整理)

    前端框架MVVM是什么(整理) 一.总结 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数 ...

  9. C# SQLite事务操作方法分析

    本文实例讲述了C# SQLite事务操作方法.分享给大家供大家参考,具体如下: 在 C#中执行Sqlite数据库事务有两种方式:SQL代码和C#代码 1. SQL代码: BEGIN… COMMIT / ...

  10. UVA-1336 Fixing the Great Wall(区间DP)

    题目大意:长城(视作x正半轴)有n处破损.有一个智能修复机器人,它的初始位置和移动速度已知.每处破损处都有一组参数(x,c,d),x表示位置,c.d表示在时间t后再修复该处破损的花费为d*t+c.求用 ...