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

news/2024/12/4 21:00:56/文章来源:https://www.cnblogs.com/miilue-13/p/18587186

目录
  • fliter 视图
  • 输出文件位置设置
  • 查看预处理结果
  • 将目标文件转换为可读的汇编
  • 自定义程序入口
  • 调试时查看变量在内存中的具体值
  • 查看代码的反汇编

fliter 视图

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

image

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

image

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

image

输出文件位置设置

自定义输出文件位置:

右键项目,选择“Properties(属性)”->“General”->“Output Directory”“Intermediate Directory”(图中展示选项的中文)

image

注意“Configuration(配置)“为”All Configurations(所有配置)”,“Platform(平台)”为“All Platforms(所有平台)”

这边也给出大佬们喜欢用的设置:

Output Directory:$(SolutionDir)bin\$(Platform)\$(Configuration)\

Intermediate Directory:$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\

如果你看不懂其指代的具体路径,对路径选择“Edit(编辑)”->“Macros”即可查看

image

应用后可以右键解决方案,选择“Clean Solution(清理解决方案)”即可去掉旧文件

查看预处理结果

首先简答介绍一下编译器的工作原理:编译器首先处理预处理语句,将头文件内容全部复制到代码文件中;其次编译器将所有C++代码转化为机器码,每个cpp文件都被编译成一个目标文件(.obj);最后将独立的目标文件合并成一个可执行文件

Visual Studio默认不输出预处理的结果,想要查看预处理结果需要在“Properties(属性)”->“C/C++”->“Preprocessor”中,将“Preprocess to File”设置为“Yes”(确保编辑的是当前的配置),编译后机会输出预处理文件(.i)

image

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

编译器编译文件时,每个cpp文件都被编译成一个目标文件(.obj),出于一些调试需求,我们可能需要阅读编译出的汇编语言

在“Properties(属性)”->“C/C++”->“Output Files”中,修改“Assembler Output”即可

image

自定义程序入口

一个可执行文件一定是以main函数为入口吗?答案是否定的

在“Properties(属性)”->“Linker”->“Advanced”中,可以自定义Entry Point

image

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

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

  • autos(自动变量窗口):显示当前行和前几行代码中使用的变量,以及下一个将要执行的行中的变量

  • locals(局部变量窗口):显示当前作用域中的所有局部变量及其值

  • watch(监视窗口):允许手动添加并监视任意变量、表达式或内存地址

image
(这里对象p的成员变量Name没有赋值)

一个更高级的方法是查看变量在内存中的具体值:“DEBUG”->“Windows”->“Memory”->“Memory 1”

image

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

image

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

image

查看代码的反汇编

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

image

image

如文章有误或疏漏,欢迎评论指出
如有帮助,欢迎关注我的博客,后续也会更新其他的技术内容(坚持日更ing)

特别推荐 Cherno 的C++课程,可以去某管订阅他的频道,B站也有转载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux: Centos7 Cannot find a valid baseurl for repo: base/7/x86_64 解决方案

问题背景 执行yum update出现如下报错排查虚拟机是否联网 ping -c 4 www.baidu.com 可以看到网络链接没有问题解决方案 原因是国外的镜像源有问题,换成国内的即可。 备份原有的镜像源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下…

D27 D26 kubernetes 通过Service实现蓝绿发布

1.蓝绿发布的基本原理蓝绿发布(Blue-Green-Deployment)是一种应用升级发布方式,这种方式可以瞬间切换到新版本,也可以瞬间回退到老版本。可以做到服务不中断的回滚,提升用户的使用体验。下面以在kubernetes中升级为例来说明蓝绿发布的过程为了在k8s中支持蓝绿发布,需要给应…

数字通信中不同信道类型对通信系统性能影响matlab仿真分析,对比AWGN,BEC,BSC以及多径信道

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)%, 4=AWGN+多径 3=BSC, 2=BEC, 1=AWGN% 计算误码for i0 = Lens + 2:-1:1 % 从后向前遍历比特if xor(msg(i0), ydec(i0)) == 1 &…

【投稿指南】你的论文正处于哪一阶段?SCI投稿状态详解

https://zhuanlan.zhihu.com/p/481416743 https://paper.dxy.cn/article/484873 https://zhuanlan.zhihu.com/p/446572754 https://zhuanlan.zhihu.com/p/378889611投稿过程中的常见缩写 EIC:Editors in Chief,期刊主编,掌握稿件最终决定权。 AE:Associate Editors,副编辑…

贪心策略(未完结)

每次都试图解决问题的尽量大的一部分 如兑换硬币,先以最多数量的最大面值来迅速减少找零面值首先确定基本结束条件(最直接的情况——其面值正好等于某种硬币) 减小问题的规模 递归算法:#!/user/bin/env python3 # -*- coding: utf-8 -*- def recMC(coinValueList, change):…

电感的通低频阻高频特性的测试

用手持电桥测出电感的实际值,以保证在这个频率附近电感数值不会有太大变化 10k档     40k档   100k档 9.96mH    9.77mH   17.25mH 用示波器的信号发生器产生一个200k的信号,串接以上电感,查看输出波形当信号为200k时输出波形的峰峰值为1.55V(不接电感时为2.44…

whk1

选 \(B\)。

web19([GYCTF2020]Blacklist):

1.输入1回显出语法错误(找到注入点,是字符型) error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 1 at line 12.依次输入1 order by 3#、1 order by 1#、1 order by 2#…

linux,ssh连接

Linux,ssh远程连接 一、 linux端配置 1、安装ssh服务 sudo apt-get updatesudo apt-get install openssh-clientsudo apt-get install openssh-server2、启动ssh service ssh start3、检查是否成功启动ssh ps -e | grep ssh确保出现ssh-agent ,若无ssh-agent,执行下列代码 e…

【攻防技术系列】Rce漏洞数据不回显解决策略

一、数据带外1.1 DNSlog1.2 TCP-Portlog1.3 ICMP-Sizelog二、延迟判断三、写文件四、反弹权限4.1 反向连接4.2 正向连接免责声明 请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章…

Quantization

目录引线性量化 (Linear Quantization)对称量化非对称量化非线性量化Power-of-XRoundingDeterministic roundingStochastic rounding[1] 进击的程序猿-模型压缩-神经网络量化基础.[2] Przewlocka-Rus D., Sarwar S. S., Sumbul H. E., Li Y. and De Salvo B. Power-of-two quan…