标签:定位 play 选择 表示 文件的 程序 data 模块 影响
对某一个变量感兴趣的话,在启动调试之后,直接对该变量“添加监视”,在调试窗口中即可看到该变量的变化;
查看指针指向的值
拷贝指针的值,将指针的值复制到“内存1”的地址文本框中,显示的值默认为十六进制。
Ctrl + F5
直接运行程序,不调试
F5
启动调试,在Debug模式下运行程序
F10
单步跳过
F11
单步进入
Shift + F11
跳出
F9
插入、移除断点
Shift + F5
停止调试
Ctrl + Shift +F5
重试调试
“无法解析的外部符号”一般是要链接的外部函数查找失败导致的
新建项目的“控制台”/“桌面应用程序”区别在于“属性->链接器->所有选项->子系统”的不同选项。
#pragma onece
... // 声明、定义语句
等同于
#ifndef func
#def func
... // 声明、定义语句
#endif
后者ifndef
受C/C++语言标准的支持,不受编译器的任何限制。
调试时,黄色箭头表示下一个将要执行的代码,可以移动黄色箭头控制执行顺序。
编译器有诸多的优化选项,Debug
和Release
实际是优化级别的区别。
Debug
好,Release
崩,检查是否有未初始化的变量,是否有数组越界;
Release
好,Debug
崩,查找代码中的assert
。
PDB文件的全称是Program DataBase,用于存放Visual Studio(VS)编译链接时生成的文件。PDB文件主要存储了Visual Studio(VS)调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、栈指针、对应的行号等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成;在VS中可以进行设置,在Release版本中也可以生成PDB文件。
当提供了PDB文件之后,在输出的异常信息中,可以获取出错的文件、行号,便于定位错误,因此无论Debug还是Release都建议生成PDB文件(VS默认行为,区别在于Debug使用的开关为Debug: full,而Release使用的开关为Debug: pdbonly)
当选择full时,VS可以直接附加应用程序,而pdbonly时VS只能用于检查堆栈信息,如何确认pdb如何被调用?在“调试->窗口->模块”,有一列表示符号状态,如果显示符号已经加载(Symbols loaded)则表示pdb正在被VS使用。
Enable Just My Code
勾选“允许仅我的代码”(默认)则VS不会加载除了PDB之外的其它PDB,造成的直接影响是无法在调试信息中看到“除我的代码”之外的其它信息(如:在调用栈中仅能看到自己的代码),大部分情况下“仅我的代码”足矣。
在Release模式下,当勾选“优化代码”,则意味着实际生成的代码和编写的代码会因为优化而不一致。这些优化一般是必须的,它使程序性能有所提升,但会增加调试难度,因为行号与实际运行的代码不匹配。可以通过在调试设置中勾选“在模块加载时取消JIT优化”来阻止代码优化。
标签:定位 play 选择 表示 文件的 程序 data 模块 影响
原文地址:https://www.cnblogs.com/mengnan/p/14942446.html