【C++】关于 Visual Studio 的利用技巧(保姆级教程)

打印 上一主题 下一主题

主题 745|帖子 745|积分 2235

目录

fliter 视图

visual studio默认是filter视图(中文为筛选器)

项目下的是filter而非硬盘目录里实际的文件夹,这时新建的也是filter

想要查看硬盘目录里实际的文件夹,点击按钮“show all files(显示全部文件)”即可

输出文件位置设置

自界说输出文件位置:
右键项目,选择“Properties(属性)”->“General”->“Output Directory”“Intermediate Directory”(图中展示选项的中文)

注意“Configuration(设置)“为”All Configurations(全部设置)”,“Platform(平台)”为“All Platforms(全部平台)”
这边也给出大佬们喜好用的设置:
Output Directory:$(SolutionDir)bin\$(Platform)\$(Configuration)\
Intermediate Directory:$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\
假如你看不懂其指代的具体路径,对路径选择“Edit(编辑)”->“Macros”即可查看

应用后可以右键解决方案,选择“Clean Solution(清明白决方案)”即可去掉旧文件
查看预处置惩罚结果

首先简答介绍一下编译器的工作原理:编译器首先处置惩罚预处置惩罚语句,将头文件内容全部复制到代码文件中;其次编译器将全部C++代码转化为机器码,每个cpp文件都被编译成一个目标文件(.obj);末了将独立的目标文件合并成一个可实行文件
Visual Studio默认不输出预处置惩罚的结果,想要查看预处置惩罚结果需要在“Properties(属性)”->“C/C++”->“Preprocessor”中,将“Preprocess to File”设置为“Yes”(确保编辑的是当前的设置),编译后机会输出预处置惩罚文件(.i)

将目标文件转换为可读的汇编

编译器编译文件时,每个cpp文件都被编译成一个目标文件(.obj),出于一些调试需求,我们可能需要阅读编译出的汇编语言
在“Properties(属性)”->“C/C++”->“Output Files”中,修改“Assembler Output”即可

自界说程序入口

一个可实行文件一定是以main函数为入口吗?答案是否定的
在“Properties(属性)”->“Linker”->“Advanced”中,可以自界说Entry Point

调试时查看变量在内存中的具体值

最常见的是用autos,locals和watch监督变量:

  • autos(自动变量窗口):显示当前行和前几行代码中利用的变量,以及下一个将要实行的行中的变量
  • locals(局部变量窗口):显示当前作用域中的全部局部变量及其值
  • watch(监督窗口):允许手动添加并监督任意变量、表达式或内存地址

(这里对象p的成员变量Name没有赋值)
一个更高级的方法是查看变量在内存中的具体值:“DEBUG”->“Windows”->“Memory”->“Memory 1”

在“Address”中输入变量的内存地址(别忘了利用&取址)即可找到变量在内存中的具体值

这里我输入了一个字符串指针,其指向字面量"hello",可以发现内存存储的内容对应了"hello"的 ASCII 编码,只不过由于是64位,因此字符串指针默认为8字节

查看代码的反汇编

在调试时,右键“Go To Disassembly”


如文章有误或疏漏,欢迎批评指出
如有帮助,欢迎关注我的博客,后续也会更新其他的技术内容(坚持日更ing)
特别推荐 Cherno 的C++课程,可以去某管订阅他的频道,B站也有转载

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表