【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)
这里写目录标题
- 1. VS基本使用
- 1.1. 快捷键
- 1.2. 查看变量地址
- 1.3. 查看代码汇编
- 1.4. visual studio 热重载功能的使用
- 1.5. vs远程服务器调试
- 1.6. 引入第三方库VLD
- 1.7. release debug模式
1. VS基本使用
1.1. 快捷键
ctrl + c :复制光标所在行 注意:只需要光标在这一行,不需要选中整行
ctrl + x : 剪切光标所在行 注意:只需将光标移至该行,不需要选中整行
ctrl + l(注意是L键) : 删除光标所在行 注意:只需将光标移至该行,不需要选中整行
ctrl + k + c :注释所选代码或光标所在行 注意:先按k,再按c 或者 ctrl+k,ctrl+c
ctrl + k + u:取消注释所选代码或光标所在行 注意:先按k,再按u 或者
ctrl shift / 快速注释/取消注释
ctrl + f :在本文件中查找
CTRL+TAB :往前缩进Ctrl + M + O 折叠所有区域
1.2. 查看变量地址
1,查看变量地址,在变量处设置断点,开始调试,右键变量->添加监视 点击调试->窗口->添加内存
参考下面这篇链接
https://blog.csdn.net/weixin_48524215/article/details/120724278
1.3. 查看代码汇编
调试的时候在这打开
1.4. visual studio 热重载功能的使用
以在应用程序运行时进行代码修改,并立即看到结果,而无需重新启动应用程序或中断调试会话。
选择-文件保存时热重载,文件保存一下就直接执行了。
1.5. vs远程服务器调试
参考下面这篇链接:
https://www.cnblogs.com/apocelipes/p/10899484.html
vs进行远程开发分为两步:
- 创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代码补全只需要头文件即可。
- 当代码写好后,选择合适的远程环境,vs将目标文件和代码复制到远程环境的指定位置,接着根据你的配置进行编译。
- 随后vs将会在console的gdb或gdbserver中运行你的程序,在此期间你可以充分享受vs debugger带来的高效和便利。
编译一下
项目属性:常规【远程生成计算机、根目录、项目目录】
调试模式分gdb、gdbserver,前者让VS在Linux上启动一console,然后运行gdb并返回输出【无法识别彩色输出】
后者会远程启用 gdbserver,本地VS解析回传的数据
接着是配置的重点,首先是配置需要同步的远程环境的头文件,有了这些文件vs才能对你的代码进行自动补全和提示:
1.6. 引入第三方库VLD
安装过程:
Release v2.5.1 · KindDragon/vld
- vId下载后安装一直点击下一步,默认安装位置即可;
此时环境变量等等都加到系统里去了,项目里直接#include"vId.h"就没问题但是报错:未识别的头文件;
通常有以下几种可能:
- VS 找不到头文件
vId.h
- VS 找不到静态库
vId.lib
- VS 找不到动态库
vId.dll
(运行时报错) - VS 配置(x86/x64)和
vId
不匹配
2、那就手动添加这种第三方库到vs里;添加过程如下:
-
(1)先找vId库的头文件
-
将这个目录添加到vs项目属性:c/c++ ->常规->附加包含目录 里;这样做是告诉 VS 头文件的路径,否则
#include "vId.h"
会报错。 -
-
(2)再找vId静态库;把静态库添加到下图链接器里的附加库目录;因为编译阶段,C++ 代码只知道
**vId.h**
里的函数声明,但 不知道具体实现在哪。 -
-
(3)最后把第三方库的动态库加入到项目的Debug目录下;
**vId.dll**
是 动态库,它的作用是 在程序运行时提供函数的实现。 -
方法1: 找到
**vId.dll**
,复制**vId.dll**
到你的项目目录 -
-
方法2: 将
vId.dll
的路径添加到 系统环境变量 PATH -
检查 VS 项目配置(32 位 / 64 位) 必须和
**vId.lib**
的架构匹配
静态库(.lib)
- 静态库是编译时链接的:当你编译你的程序时,静态库的代码会直接嵌入到你的最终可执行文件(
.exe
)中。 - 不需要运行时支持:你只要在编译时正确链接静态库即可,运行时不需要额外的
.dll
文件。 - 适用场景:当你想把所有代码都嵌入到一个
.exe
文件中,避免依赖其他文件。
动态库(.dll)
- 动态库是运行时链接的:动态库的代码不是直接嵌入到你的
.exe
文件中,而是在程序运行时动态加载。 - 需要运行时支持:你需要确保
.dll
文件与.exe
在同一目录(Debug目录下),或者.dll
路径被添加到系统环境变量PATH
中。 - 适用场景:当你想要让多个程序共享同一个
.dll
文件,或者更新程序时只需要替换.dll
文件。
**vId.lib**
是什么?
**vId.lib**
可能是 静态库 或 导入库(用于动态链接)。- 如果
**vId.lib**
是静态库,你可以直接将它链接到程序中,所有代码都会被编译进你的.exe
文件中。 - 如果
**vId.lib**
是导入库(这里是这个),它仅仅是一个 指向**vId.dll**
的链接,在编译时用来将函数导入到程序中,但在运行时,程序会依赖vId.dll
来执行实际的功能。
**vId.dll**
是什么?
**vId.dll**
是动态库,它提供了运行时的实际功能。程序在运行时会 加载**vId.dll**
来执行相关操作。- 如果
**vId.lib**
是导入库,则vId.dll
是 必需的,否则程序会报错,因为找不到vId.dll
中的实现。
1.7. release debug模式
- Release 模式:
- Release 模式用于生产环境中的最终产品。在这种模式下,编译器通常会应用各种优化,以提高代码的执行效率和减小最终可执行文件的大小。
- 调试信息通常会被剥离,以减小可执行文件的大小,这样在出现问题时可能会更难进行调试。
- 代码通常会被优化,以提高性能,但可能会使得调试时变量的值不太容易跟踪。
- 可执行文件通常会比 Debug 模式下的文件更快运行。
- Debug 模式:
- Debug 模式用于开发和测试阶段,目的是方便开发人员进行调试和定位问题。
- 在 Debug 模式下,通常会保留调试信息,使得开发人员可以更轻松地进行调试,例如查看变量的值、跟踪函数调用等。
- 通常不会进行过多的优化,以便开发人员能够更准确地观察代码的运行情况。
- 可执行文件通常会比 Release 模式下的文件更大,因为包含了更多的调试信息